2017-03-01 1 views
1

나는이 자바 스크립트 코드를 사용하여 벽에서 튀어 오르는 공을 얻고 클릭시 & 일시 중지를 일시 중지합니다. 일시 중지 할 볼을 얻었으므로 잠재적 옵션에 대한 의견을 보내고 부울을 사용하여 다시 시작할 수 있습니다. setTimer() & stopTimer()는 미리 정의 된 함수입니다.공이 튀어 오르는 벽 - 일시 중지 및 이력서

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

당신은 순수한 자바 스크립트가 필요하거나 심지어 괜찮습니까? –

+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) –

관련 문제