- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我只是深入研究简单的游戏网络动画,我正在寻求建议。最终,我会很好地掌握贝塞尔曲线和弧线,并学习如何沿着路径设置动画以获得一些漂亮的暗黑破坏神 III 风格的曲线数字,但目前,我只是想了解基础知识。
关键代码很简单-
paper.text(170, 95, dmgValue).attr({fill:"white", "font-size":16}).animate({
transform:"t0,-50", "fill-opacity":0} ,500).node.setAttribute("class", "no-select");
CSS 样式防止文本被突出显示(感谢此处用户的帮助)。主要问题是文本仍然存在,没有不透明度——您可以将鼠标悬停在它上面并看到文本光标。虽然它有效,但它看起来有点凌乱。另外,由于没有分配变量,我认为我不能用 Element.remove(); 处理它;
我在保存的版本之间做了很多小修改,使代码变得像现在这样庞大。我希望能够限制一次飞来飞去的数字的数量(对于速度较慢的计算机),所以我将它们放入一个可以无限循环和使用的数组中,尽管这可能不需要并且不会很大同意将其排除在外。
还从使用变换转变为设置 y 坐标,并将 .hide() 放入单独的回调函数中(出于某种原因,它起作用了,而不是将其放在动画的末尾)。
这个版本一开始似乎可以工作,但是当您点击太多次时动画会中断,我不确定为什么。我确信我最终可以在足够的时间内弄清楚,但无论如何我可能会把它弄得太复杂。完整代码-
var paper = Raphael(0, 0, 350, 350);
paper.canvas.style.backgroundColor = "Black";
var dmgValues = [],
dmgValuesIndex = 0,
maxMsgs = 15,
dmgXMaxOffset = 25,
dmgYMaxOffset = 25,
dmgXRef = 170 - dmgXMaxOffset,
dmgYRef = 250 - dmgYMaxOffset,
dmgMaxDistance = 50;
for (i=0; i< maxMsgs; i++) {
dmgValues[i] = paper.text().attr({fill:"white", "font-size":16});
dmgValues[i].node.setAttribute("class", "no-select");
dmgValues[i].hide();
}
var toggle = paper.rect(150, 270, 50, 25).attr({fill:"green"});
toggle.click(function() { doHit(); });
function doHit() {
var dmgHit = Math.floor(Math.random() * 99) + 1,
xPos = Math.floor(Math.random() * dmgXMaxOffset) + 1,
yPos = Math.floor(Math.random() * dmgYMaxOffset) + 1;
dmgValues[dmgValuesIndex].show();
if (dmgValues[dmgValuesIndex].status() == 1) { dmgValues[dmgValuesIndex].stop(); }
dmgValues[dmgValuesIndex].attr({x:dmgXRef + xPos, y:dmgYRef + yPos, text:dmgHit,
"fill-opacity":1}).animate({y:dmgYRef - dmgMaxDistance, "fill-opacity":0}, 600,
"linear", function() { afterEffects(dmgValues[dmgValuesIndex]) });
}
function afterEffects (afterTarget) {
afterTarget.hide();
dmgValuesIndex++;
if (dmgValuesIndex >= maxMsgs) { dmgValuesIndex = 0; }
}
CSS:
.no-select {
-moz-user-select: none;
-webkit-user-select: none;
}
最佳答案
我想我明白了!
http://jsfiddle.net/rLcwax9k/10/
我注意到的一件事是增量器在动画之后发生的回调函数中,所以它并不是真的在计数。但是,主要是因为 dmgValuesIndex
是全局的,并且在每次点击时都会增加。所以,当动画完成时,它正在根据回调中动画结束时的当前计数执行函数,这可能不是正确的。因此,我只是在函数上放置了一个参数,并在整个调用过程中将其用作引用并将其传递给回调。
嘿,我有点开始明白为什么很多语言都需要在它们的对象上使用 setter 和 getter 方法。对于像我这样的菜鸟来说,这应该是一个很好的教训,让他们了解如何使用全局变量范围及其可能的副作用。
但是,在我接受答案之前,我仍在寻找任何其他可能更有效的方法。
主要代码-
function doHit(iter) {
this.iter = iter;
var dmgHit = Math.floor(Math.random() * 99) + 1,
xPos = Math.floor(Math.random() * dmgXMaxOffset) + 1,
yPos = Math.floor(Math.random() * dmgYMaxOffset) + 1;
dmgValues[iter].show();
if (dmgValues[iter].status() == 1) { dmgValues[iter].stop(); }
dmgValues[iter].attr({
x:dmgXRef + xPos,
y:dmgYRef + yPos,
text:dmgHit,
"fill-opacity":1
})
.animate({
y:(dmgYRef + yPos) - dmgMaxDistance,
"fill-opacity":0},
1000,
">",
function() {
dmgValues[iter].hide();
}
);
}
关于javascript - RaphaelJS/CSS - 动画文本/数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26051164/
我对以下演示有疑问 - http://raphaeljs.com/hand.html . 这是示例中的代码... var r = Raphael("holder", 640, 480), angle
我使用 for 循环创建了 4 个矩形。如果您将鼠标悬停在这些矩形中的任何一个上,一个矩形将显示在旁边。但问题是新显示的矩形不会在鼠标移出时隐藏。我的代码有什么问题? JS Fiddle window
我使用 for 循环创建了 4 个矩形。如果您将鼠标悬停在这些矩形中的任何一个上,一个矩形将显示在旁边。但问题是新显示的矩形不会在鼠标移出时隐藏。我的代码有什么问题? JS Fiddle window
我有一个RaphaelJS库的路径,我似乎无法获得填充来更改其颜色。 var mypage = ScaleRaphael('mainContainer', 1000, 1000); mypage.s
在 SVG 或 raphael's 中使用 1px 的权重是真的吗? 以下代码 var p = Paper.path("M1 1 L50 1"); p.attr("stroke", "#D7D7D
假设我有以下文本对象: var text = r.print(50, 50, "demo", r.getFont("Impact", 50), 30).attr({fill: '#fff', stro
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我正在使用 Raphaeljs 制作动画。我有一套里面有一个圆形和一个矩形。我可以轻松旋转该集合,但我不知道如何为该旋转设置动画。 这是我的代码: var gun = paper.set(); gun
我需要帮助向我的 raphaelJS 动画添加循环。这个想法是点击按钮 id="1"将紫色方 block 旋转 120 度。如果您点击按钮 id="2",紫色方 block 将向左旋转 120 度。
我正在为我的网络应用程序使用 rapaeljs。我想设置对象的可放置边界。对象可以在可放置区域移动。一旦物体进入可放置区域,该物体就应该没有出路。 最佳答案 Raphael 通过 .drag() 内置
我正在自定义以下链接中拉斐尔网站上给出的饼图 http://raphaeljs.com/pie.html 此图表显示悬停切片时的动画,该动画只是将切片稍微展开 我想要的是将切片与图表分开 我使用了以下
如果删除单选按钮为“true”,我想在单击形状时删除该形状。现在我只能删除整篇拉斐尔论文。有人可以帮助我吗?我使用 RaphaelJS 和 Jquery。 HTML
我使用Raphael js饼图插件 http://raphaeljs.com/pie.html 我需要每 5 秒刷新一次图表值数组(需要重新绘制饼图) - 我的问题是以下代码还创建新的饼图,而不仅仅是
因此,我尝试对元素/集使用 getBBox() 方法,并使用 x、y、width 和 height 属性来定义矩形。然而该元素附加了一个拖动事件,每次触发拖动事件时,它都会绘制一个新的边界框。 我尝试
我的乒乓球生成得非常稳定,但是利率动态变化。所以在给定的一秒钟内,可能会有 1 乒乓球正在绘制并在屏幕上平移的球(不断从左到右)或 50。 我有一个乒乓 Racket ,它会根据这些的生成做出响应球,
好的,那么我们有一个基本的情况,那就是画一个圆并用图像填充它。这可以通过使用轻松完成: el.attr({'fill': 'url(image_url)'}); 但上面的缺点是无法缩放图像以适合圆圈。
我正在尝试使用 RaphaelJS 在纸张宽度的 50% 处放置一个圆圈,这是否可能不先进行数学运算(.5 * 像素宽度)?我想简单地将一个元素放置在其容器宽度的 50% 处,这在当前的 Raphae
有什么方法可以切换您在 RaphaelJS 中所做的转换吗?截至目前,以下代码可以在单击时使圆圈变大。我需要的是切换转换,以便我可以再次单击,然后圆圈缩小并移回原位。 window.onload =
我使用 emberjs 和 raphaeljs 制作了一个绘图工具,最近开始支持触摸屏。该应用程序允许用户用线连接点。 我的问题: 我的点对于触摸屏来说太小了,我不想调整它们的大小,因为我喜欢它的美感
我正在尝试获得一个部分透明的矩形,其中左侧部分不透明,而右侧部分更透明,如果你朝那个方向移动。 这适用于 Firefox、Chrome,但不适用于 Internet Explorer 7 或 IE8。
我是一名优秀的程序员,十分优秀!