我在做什么:
-a一个javaScript动画(总共114帧),用于快速连续替换下一张图片。
-onmouseover打开门的图像。 (播放72帧并停留在第72帧)
- 未完成关闭。 (播放42帧并停留在最后一帧)
- 如果在动画完成前将鼠标移离元素,它将完成72帧,然后播放42帧。
- 如果鼠标在42帧完成之前移回到元素上,它将完成播放42帧,然后播放72帧。javaScript有没有更好的方法来制作这个动画?
问题:
- 我是javaScript的noob,并没有完全理解它。
- 即使它的作品,它是非常错误的,你不能移动你的鼠标远离元素,而不会搞乱动画。
- 此外,我不知道如何使它完成上面列出的所有事情。
这是我现在所拥有的代码:
HTML:
<div onmouseover="openDoor()" onmouseout="closeDoor()" id="door2"></div>
<div id="door">
<img src="images/Animation_Door/0001.png">
<img src="images/Animation_Door/0002.png">
<img src="images/Animation_Door/0003.png">
...etc... (114 frames)
</div>
CSS:
#door {
background-color:transparent;
...etc...
}
.door img{
display: none;
}
.door img:first-child {
display: block;
}
javaScript:
function openDoor() {
var ti, frame = 0;
var frames = document.getElementById("door").children;
var frameCount = frames.length;
for (i=0; i<72; i++) {
ti = setTimeout(function(){
frames[i % frameCount].style.display = "none";
frames[++i % frameCount].style.display = "block";
}, 50*i);
}
}
function closeDoor() {
var ti, frame = 0;
var frames = document.getElementById("door_close").children;
var frameCount = frames.length;
for (i=0; i<42; i++) {
setTimeout(function(){
frames[i % frameCount].style.display = "none";
frames[++i % frameCount].style.display = "block";
}, 50*i);
}
}
1.您的动画很可能是更快,更流畅,如果你有这些72帧作为一个物理图像文件的精灵,而不是请求72个独立的图像文件。 – techfoobar
2.为什么不只是一个GIF文件? – techfoobar
我尝试做一个精灵,并没有太大的成功,因为我一般缺乏关于javaScript的知识。它看起来像个人形象运行良好,但如果我可以用一个精灵来做到这一点,那也是很棒的。 – user1868086