2017-01-10 3 views
1

実行したい場合はここに私の完全なコードがあります。ループが一番下に来たらループを一時停止する方法は? Window.requestanimationframe - Javascript/html5 canvas

window.onload = function(){ 
    var canvas = document.getElementById('mycanvas'); 
    var ctx = canvas.getContext('2d'); 
    var warrior = document.getElementById('warrior'); 
    var enemyxpos = 100; 
    var enemyypos = 75; 
    canvas.width = window.screen.width; 
    canvas.height = window.screen.height; 
    var image = new Image(); 
    image.src = "sprite_guy_warrior-1.png"; 

    window.requestAnimationFrame(function loop(){ 
      enemyypos +=1; 
      ctx.clearRect(enemyxpos,enemyypos,90,90); 
      ctx.drawImage(image,enemyxpos,enemyypos,90,90); 
     window.requestAnimationFrame(loop); 
     }); 
}; 

私はそれがキャンバスの下になったときに「イメージ」を停止したい: https://repl.it/FEl8/0 はここだけではJavaScriptです。誰も私にそれをする方法を教えてもらえますか?

+0

'場合(enemyypos + 90 Kaiido

+0

あなたは再び開始の場合に件名を変更する必要があります。 –

答えて

0

height of the canvasを取得し、yの値を確認してください。

window.onload = function(){ 
    var canvas = document.getElementById('mycanvas'); 
    var cheight=canvas.height; 
    var ctx = canvas.getContext('2d'); 
    var warrior = document.getElementById('warrior'); 
    var enemyxpos = 100; 
    var enemyypos = 75; 
    var flag=90;//height of the image 
    canvas.width = window.screen.width; 
    canvas.height = window.screen.height; 
    var image = new Image(); 
    image.src = "http://cliparts.co/cliparts/nrc/L6p/nrcL6pi84.png"; 
    window.requestAnimationFrame(function loop(){ 
      enemyypos +=1; 
      ctx.clearRect(enemyxpos,enemyypos,90,90); 
      ctx.drawImage(image,enemyxpos,enemyypos,90,90); 
      if(cheight+flag >= enemyypos){ //here........... 
      window.requestAnimationFrame(loop); 
      }else{ 
       ctx.clearRect(0, 0, canvas.width, canvas.height);//clear the canvas ans start again. 
      enemyypos = 75; 
      window.requestAnimationFrame(loop); } 
     }); 

}; 

DEOM HERE

+0

'flag'を描画する必要があります' image' height:90. – Kaiido

+0

@Kaiido前にいくつかのことを止めていると思います。初心者はyの開始値をとると思った。 –

+0

よくある質問*キャンバスの底に来たときに「イメージ」を止めたいです。私たちは間違いなく、それ自身の底がキャンバスに達したときに「イメージ」が底に来ると判断することができます。それを90の高さで描画するので、 'flag'は90でなければなりません。 – Kaiido

0

単にあなたのループの中で、この条件を使用します。ここでは

if (enemyypos <= canvas.height - 90){ 
    window.requestAnimationFrame(loop); 
} 

repl

+0

ありがとう、ループを一時停止する方法をお勧めします。 「イメージ」が底に来たときにループを一時停止したい場合は、トップに戻してください –

+0

@Moe Chunghtai、これはどうですか? 'if(enemyypos <= canvas.height - 90){ window.requestAnimationFrame(loop); } else { ctx.clearRect(enemyxpos、enemyypos、90,90); ctx.drawImage(image、enemyxpos、75,90,90); } ' – GProst

+0

実際には、私は底に上がって、下から上に向かうようになった(ボールが落ちてきて、バウンスするようなもの) –

関連する問題