我正在尝试做的事情:
- 一个 JavaScript 动画(总共 114 帧),可以快速连续地将一张图像换成下一张。
-onmouseover 一个门的图像打开。(播放 72 帧并停留在第 72 帧)
-onmouseout 门关闭。(播放 42 帧并停留在最后一帧)
- 如果在动画完成之前鼠标从元素上移开,它将播放完 72 帧,然后播放 42 帧。
- 如果鼠标在 42 帧完成之前移回元素上,它将播放完 42 帧然后播放 72 帧。
问题:
-我是 javaScript 的菜鸟,还没有完全理解它。
- 尽管它有点工作,但它非常有问题,你不能将鼠标从元素上移开而不弄乱动画。
-另外,我不知道如何让它完成上面列出的所有事情。
这是我现在拥有的代码:
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);
}
}