我遇到的問題與用戶單擊動畫最後一幀時動畫凍結有關。我做了一個JSFiddle。點擊動畫在其最後一幀時,它會凍結。當用戶點擊時,我嘗試過阻止輸入。單擊停止動畫(發行)
if(active === false){
active = true;
}
但無濟於事。這可能是簡單的,我只是沒有線索。
我遇到的問題與用戶單擊動畫最後一幀時動畫凍結有關。我做了一個JSFiddle。點擊動畫在其最後一幀時,它會凍結。當用戶點擊時,我嘗試過阻止輸入。單擊停止動畫(發行)
if(active === false){
active = true;
}
但無濟於事。這可能是簡單的,我只是沒有線索。
嘗試這個 -
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var activeIMG;
var active = false;
var frame = 7;
window.images = {
c0: new Image(),
c1: new Image(),
c2: new Image(),
c3: new Image(),
c4: new Image(),
c5: new Image(),
c6: new Image()
};
images.c0.src = 'http://i.imgur.com/Tw3iDG6.png'; //Normal
images.c1.src = 'http://i.imgur.com/nFS1YYw.png'; //Start
images.c2.src = 'http://i.imgur.com/f8BYubj.png'; //Boom
images.c3.src = 'http://i.imgur.com/96N0hLn.png'; //Boom Smoke
images.c4.src = 'http://i.imgur.com/1iACNo8.png'; //Thick Smoke
images.c5.src = 'http://i.imgur.com/eZxuXtC.png'; //Lighter Smoke
images.c6.src = 'http://i.imgur.com/ooZJYa9.png'; //Rounding Smoke
activeIMG = images.c0;
$('body').mousedown(function (event) {
var chords = ("X: " + event.pageX + "Y: " + event.pageY);
if (frame > 6) {
active = true;
frame = 0;
}
});
setInterval(function change() {
if (active) {
activeIMG = window.images["c" + frame++];
//console.log(activeIMG)
active= frame <= 6;
} else {
activeIMG = window.images["c0"];
}
}, 150);
function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height)
ctx.drawImage(activeIMG, 0, 0);
requestAnimationFrame(draw);
}
draw();
哇,謝謝,這是更好的方式來循環圖像。 – VStrideUltimate 2014-09-05 00:24:42
只要您碰到第6幀,您就將active
設置爲false
,因此它現在「可重新啓動」,您希望在第6幀已經繪製/或第7幀(重複幀1)開始時進行設置。
在案例6上設置一個斷點並逐步完成。
啊嗯感謝洙好。我所需要做的就是創建另一個案例,然後讓框架回到零。 – VStrideUltimate 2014-09-04 04:15:36
我這是怎麼做到這一點,你看我已經在你的代碼的一些變化:
var test = function(event){
var chords = ("X: " + event.pageX + "Y: " + event.pageY);
//alert(chords);
active = true;
};
$('body').bind('click',test);//binding click event
$('body').unbind('click');//unbinding it when animation is going on for preventing unwanted click
/* made some changes in case 6 also, binding click event once more and set frame to 0 */
case 6:
activeIMG = images.c6;
active = false;
frame=0;//most important to make frame from start again
$('body').bind('click',test);//binding again
break;
你想做什麼?解釋 – Manwal 2014-09-04 04:06:07