同时运行多个Javascript png精灵动画
Running multiple Javascript png sprite animations simultaneously
我被要求创建一个简单的png动画:当鼠标悬停在菜单项上时出现的闪烁,如下所示:http://www.breathoflifeart.com/wordpress/videos/正如您在发布时看到的那样,动画播放得很好,但是当另一个实例启动时,动画就会停止(以中等速度将鼠标扫过菜单项以查看错误)。我正在尝试:
A.即使在另一个元素被高亮显示后,动画仍继续播放
或
B.将背景位置重置为0 onmouseout
下面是当前的javascript,修改自另一个问题中的示例:
var scrollUp = (function () {
var timerId; // stored timer in case you want to use clearInterval later
return function (height, times, element) {
clearInterval(timerId);
var i = 0; // a simple counter
timerId = setInterval(function () {
if (i > times) // if the last frame is reached, set counter to zero
{ i = 0;
clearInterval(timerId);}
else
element.style.backgroundPosition = "0px -" + i * height + 'px'; //scroll up
i++;
}, 50); // every 50 milliseconds
};
})();
HTML(每个元素都遵循相同的基本模板)
<a href="./for-sale/" onmouseover="scrollUp(42, 9, document.getElementById('sp-58'))">
For Sale
<div id="sp-58" class="sparkleparty"></div>
</a>
您真正需要的是为每个动画使用单独的timerId-s。实际上,这是作用域和闭包的问题。在提供的示例中,timerId对于所有scrollUp(…)函数来说都是全局的。要解决这个问题,你可以这样做:
var scrollUp = function (height, times, element) {
var i = 0; // a simple counter
var timerId = setInterval(function () {
if (i > times) {
i = 0; clearInterval(timerId);
} else {
element.style.backgroundPosition = "0px -" + i * height + 'px'; //scroll up
}
i++;
}, 50); // every 50 milliseconds
};
我为此创建了一个简单的库。查看链接:https://github.com/wolthers/SpriteClip.js
相关文章:
- 如何在Edge中下载图像/png数据URI
- 打字精灵动画
- 如何通过ajax将png图片从服务器发送到浏览器中显示
- 将SVG下载为PNG图像
- 在EaselJS中设置精灵表动画时出现问题
- 如何在jquery、javascript、HTML5中以base64字符串保存为(PDF、doc、xls、png.)
- three.js:如何让透明的png精灵投射和接收阴影
- 如何使用Pixijs获取在加载的精灵表资产中定义的图像
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- 使用grunt模块创建svg精灵
- 在fabric.js中以PNG格式下载Canvas,给出网络错误
- Node.js库,用于生成索引PNG
- ng文件上传获胜't将jpg图像转换为png
- 从画布上的SVG导出PNG
- HTML5 Canvas toDataURL(“image/png”)适用于一些绘画,而有些则不然,不确定原因
- Canvas.toDataUrl(“image/png”)工作不正常
- 精灵从pixi到p2的边界多边形
- "image/png;base64"它做什么
- 精灵的 PNG 修复
- 同时运行多个Javascript png精灵动画