我在做什麼:
-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