2017-03-01 1 views
1

再開します。私はボールを一時停止させ、ブール値を使ってレジュームを可能にする可能性のあるオプションについてのフィードバックを希望します。 setTimer()& stopTimer()はあらかじめ定義された関数です。ボール - 一時停止&Iは、壁に跳ね返るとクリックで&履歴書を一時停止するボールを得るために、このJavaScriptコードに取り組んでいます

var ball; 
var dx = 4; 
var dy = 4; 
var isPaused = false; 


/* This program has a ball bounce around the screen. */ 
function start(){ 
    ball = new Circle(20); 
    ball.setPosition(100, 100); 
    add(ball); 

    setTimer(draw, 20); 
    if(isPaused == true){ 
     mouseClickMethod(resume); 
    } 
} 

function draw(){ 
    checkWalls(); 
    ball.move(dx, dy); 
    mouseClickMethod(pause); 
} 

function checkWalls(){ 
    // Bounce off right wall 
    if(ball.getX() + ball.getRadius() > getWidth()){ 
     dx = -dx; 
    } 

    // Bounce off left wall 
    if(ball.getX() - ball.getRadius() < 0){ 
     dx = -dx; 
    } 

    // Bounce off bottom wall 
    if(ball.getY() + ball.getRadius() > getHeight()){ 
     dy = -dy; 
    } 

    // Bounce off top wall 
    if(ball.getY() - ball.getRadius() < 0){ 
     dy = -dy; 
    } 
} 

function pause(e){ 
    var isPaused = true; 
    if(isPaused == true){ 
     stopTimer(draw); 
    } 
} 

function resume(e){ 
    var isPaused = false; 
    if(isPaused == false){ 
     setTimer(draw, 20); 
    } 
} 
+0

純粋なjavascriptで、またはjqueryでも大丈夫ですか? –

+1

なぜそれを使用しない場合は、pause()とresume()の関数パラメータを持っていますか? –

+0

アニメーションに関連するタイミングを設定する場合は、setTimeoutを使用する代わりにrequestAnimationFrameを調べることをお勧めします。 https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame – derp

答えて

0

ちょっと分かりました。これで仕事は終わった。

var ball; 
var dx = 4; 
var dy = 4; 
var isPaused; 


/* This program has a ball bounce around the screen. */ 
function start(){ 
    ball = new Circle(20); 
    ball.setPosition(100, 100); 
    add(ball); 

    setTimer(draw, 20); 
} 

function draw(){ 
    checkWalls(); 
    ball.move(dx, dy); 
    mouseClickMethod(pause); 
} 

function checkWalls(){ 
    // Bounce off right wall 
    if(ball.getX() + ball.getRadius() > getWidth()){ 
     dx = -dx; 
    } 

    // Bounce off left wall 
    if(ball.getX() - ball.getRadius() < 0){ 
     dx = -dx; 
    } 

    // Bounce off bottom wall 
    if(ball.getY() + ball.getRadius() > getHeight()){ 
     dy = -dy; 
    } 

    // Bounce off top wall 
    if(ball.getY() - ball.getRadius() < 0){ 
     dy = -dy; 
    } 
} 

function pause(){ 
    isPaused = true; 
    if(isPaused == true){ 
     stopTimer(draw); 
    } 
    mouseClickMethod(resume); 
} 

function resume(){ 
    isPaused = false; 
    if(isPaused == false){ 
     setTimer(draw, 20); 
    } 
} 
+0

私が知っていたコードの最後の部分、つまりmouseClickMethod(ポーズ)に従っていただけです。したがって、pause()関数の中で、私はresume()関数で再び動きを有効にするためにブール値を戻したmouseClickMethod(resume)を探すために同じビットを追加しました。よく働く! isPausedはグローバル変数ですが、pause()関数とresume()関数で独立して定義されています。それは最終的に動作します。コメントありがとう! – user67762

+0

元の投稿に対する私のコメントによれば、isPaused変数を完全にレジュームと一時停止から単に削除するとどうなりますか? (すなわち、条件および変数割り当てがない場合はno) –

関連する問題