2014-10-20 5 views
0

플레이어가 임의로 떨어지는 물건을 피해야하는 게임을 만들고 있습니다. 나는 일시 정지를 구현하는 방법을 모른다. 나는 2 일 동안 이것에 붙어 있었다!ActionScript 2로 게임 일시 중지

gotoAndPlay 등을 사용해 보았지만 개체가 백그라운드에서 계속 실행되었습니다. 게임을 다시 시작하면 계속 떨어지고 프레임이 재설정되고 새로운 임의의 떨어지는 물체가로드되는 것 같습니다.

var steps:Number = 10; 
var spriteX:Number = 280; 
var spriteY:Number = 650; 
var alienCounter=1; 
var asteroidCounter=1; 
var live:Number=3; 
var depthLevel=3000; 
var score:Number = 0; 
var gamePaused; 
dropTimer=setInterval(createAlien,2000); 
drpTimer2=setInterval(createAsteroid,1000); 
//---- functions ---- 
function checkKeys() 
{ 
if (Key.isDown(Key.RIGHT)) 
{ 
spriteX += steps; 
} 
else if (Key.isDown(Key.LEFT)) 
{ 
spriteX -= steps; 
} 
} 
function updateSpaceship() 
{ 
ship._x = spriteX; 
ship._y = spriteY; 
} 
function createAlien() 
{ 
    var curr_alien; 
    curr_alien=attachMovie("alien","alien"+alienCounter,depthLevel); 
    curr_alien._y=40; 
    curr_alien._x=Math.random()*510+20; 
    curr_alien._xscale=curr_alien._yscale=50; 
    curr_alien.speed=Math.random()*10+3; 
    alienCounter+=1; 
    depthLevel+=1; 
    curr_alien.onEnterFrame=alienMove; 
} 
function alienMove() 
{ 
    if(!gamePaused) 
    { 
    this._y+=this.speed; 
    if(this.hitTest(ship)) 
    { 
     score += 1; 
     trace(score); 
     removeMovieClip(this); 
    } 
    } 
} 
function createAsteroid() 
{ 
     var curr_asteroid; 
     curr_asteroid=attachMovie("asteroid","asteroid"+asteroidCounter,depthLevel); 
     curr_asteroid._y=40; 
     curr_asteroid._x=Math.random()*510+20; 
     curr_asteroid._xscale=curr_asteroid._yscale=50; 
     curr_asteroid.speed=Math.random()*10+3; 
     asteroidCounter+=1; 
     depthLevel+=1; 
     curr_asteroid.onEnterFrame=asteroidMove; 
} 
function asteroidMove() 
{ 
    if(!gamePaused) 
    { 
    this._y+=this.speed; 
    if(this.hitTest(ship)) 
    { 
     live -= 1; 
     trace(live); 
     removeMovieClip(this); 
     if(live<=0) 
     { 
      gotoAndPlay(5); 
     } 
    } 
    } 

} 
this.onEnterFrame = function() 
{ 
     checkKeys(); 
     updateSpaceship(); 
     if(Key.isDown(80)) 
     { 
      if(!gamePaused) 
      { 
       gamePaused=true; 
       gotoAndPlay(4); 
      } 
      else 
      { 
       gamePaused=false; 
       gotoAndStop(3); 
      } 
     } 
}; 

버튼을 사용하려고 할 때 해결책을 찾을 수 없기 때문에 대신 키를 사용하기로 결정했습니다. 일시 중지 기능이 내가 예상대로 작동하지 않습니다, 내가 그것을 잠시 멈출 여러 번 키 'p'를 입력해야하지만 프레임을 다시 설정하고 다시 시작하면 더 많은 임의의 개체를로드 할 필요가 없습니다.

+0

실제 게임 인 떨어지는 물건과 물건을 하나의 무비 클립으로 포장합니다. 두 번째 무비 클립에서 일시 중지 화면을 만듭니다. 그런 다음 기본 타임 라인에서 게임을 한 프레임에 배치하고 두 번째 프레임에서 일시 중지합니다. 그런 다음 기본 타임 라인에서 gotoAndStop()을 사용하십시오. 또는 변수를 추가 할 수 있습니다 (예 : bool paused). 무작위 객체가 생성되는 곳에서 paused가 false와 같은지 확인하십시오. –

+0

일시 중지 버튼을 만들었으므로 일시 중지 버튼에 gotoAndStop()을 구현할 수는 있지만 작동하지 않는 것이 좋을 것입니다. 아직 Actionscript 2에 대한 새로운 내용이므로 자습서 나 예제는 – user3132527

+0

코드를 보여 주므로 도움이 될 것입니다. – Fergoso

답변

1

이 시도 :

제거하여 : 일시 중지해야하는 경우 또는

var keyListener:Object = new Object(); 
keyListener.onKeyUp = function() { 
    if(Key.getCode() == 80) { 
     gamePaused = !gamePaused; 
     mainLoop(); 
    } 
}; 
Key.addListener(keyListener); 

function mainLoop() { 
    if (gamePaused) { 
     gotoAndStop(4); // update game actions here 
     trace("game is paused"); 
     return; 
    } 
    gotoAndStop(3); // update game actions here 
    trace("game is running"); 
} 

:

this.onEnterFrame = function() 
{ 
     checkKeys(); 
     updateSpaceship(); 
     if(Key.getCode() == 80) 
     { 

      if(!gamePaused) 
      { 
       gamePaused=true; 
       gotoAndPlay(4); 
       trace("AAA") 
      } 
      else 
      { 
       gamePaused=false; 
       gotoAndStop(3); 
       trace("BBB") 
      } 
     } 
}; 

은 (키보드의 'P'키를 눌러 일시 정지)이 추가 버튼 사용 :

my_pause_Button.onRelease = function() { // your button instance name 'my_pause_Button' 
    gamePaused = !gamePaused; 
    mainLoop(); 
}; 
+0

내 일시 정지 기능이 완벽하게 작동합니다! 당신의 도움을위한 Thnks (Y) – user3132527

0

버튼 기능 또는 키 입력 기능에 넣으십시오.

stage.frameRate = 0.01; 
관련 문제