2012-11-11 3 views
0

그래서 나는 엉망이되어서 내가 플래시에서 작업하고있는 게임에 메인 메뉴를 추가 할 것이라고 결정했습니다. 그래서 나는 배경이 있고 배경으로 볼을 추가하여 화면을 가로 지르거나 내리거나 움직일 것이라고 결정했습니다. 그러나 지금까지 발견 한 모든 것은 단지 고집하고 있습니다. 상단 모서리는 각 프레임을 업데이트하지 않습니다. 내가 잘못 가고있는 부분에 대한 약간의 피드백은 대단히 감사하게 생각합니다. 아마도 내가 잘못된 곳에서 addChild(gameBall)을하고 있기 때문에 그 점을 이해할 수 있습니다.하지만 어떻게 수정해야할까요? main.as는 기본적으로 게임의 상태를 확인하는 스위치이며 mainMenu.as는 mainMenu 자체입니다. 그것들은 코드 위에 언급 한 별도의 파일입니다.addChild 사용 - 플래시?

// main.as 
package 
{ 
import flash.display.*; 
import flash.system.fscommand; 

public class main extends MovieClip 
{ 
    public function main() 
    { 
     changeState(null, "menu"); 
    } 
    public function changeState (currentState, nextState) 
    { 
     if (currentState != null) 
     { 
      removeChild(currentState); 
     } 
     switch(nextState) 
     { 
      case "menu": var mm:mainMenu = new mainMenu(changeState); 
         addChild(mm); 
      break; 
      case "game": var g:theGame = new theGame(changeState); 
         addChild(g); 
      break; 
      case "exit": fscommand("quit"); 
      break; 
     } 
    } 

} 

} 



//mainMenu.AS 
package 
{ 
import flash.display.*; 
import flash.events.*; 

public class mainMenu extends MovieClip 
{ 
    var theCallBackFunction:Function; 

    private var ballX:Number = 5; // Declaring a variable known as _vx 
    private var ballY:Number = 5; // Declaring a variable knwon as _vy 
    private const GRAVITY:Number = 2; // Declaring a const variable known as gravity 
    var gameBall:Ball = new Ball(); 

    public function mainMenu(callBack) 
    { 
     var btnPlay:mmPlay = new mmPlay(); 
     btnPlay.addEventListener(MouseEvent.MOUSE_DOWN, brnP_Button); 
     btnPlay.x = width/2; 
     btnPlay.y = height/2 - btnPlay.height/2; 
     addChild(btnPlay); 

     var btnExit:mmExit = new mmExit(); 
     btnExit.addEventListener(MouseEvent.MOUSE_DOWN, brnE_Button); 
     btnExit.x = width/2; 
     btnExit.y = height/2 - btnExit.height/2; 
     btnExit.y += btnExit.height + 4; 
     addChild(btnExit); 

     ballY += GRAVITY 
     if (ballY < 0) 
     { 
      ballY += 5; 
     } 
     gameBall.x += ballX; 
     gameBall.y += ballY; 
     addChild(gameBall); 

     theCallBackFunction = callBack; 
    } 
    public function brnP_Button(e:MouseEvent) 
    { 
     theCallBackFunction(this, "game"); 
     return; 
    } 

    public function brnE_Button(e:MouseEvent) 
    { 
     theCallBackFunction(this, "exit"); 
     return; 
    } 


} 

} 
+0

어떻게 enterFrameHandler 메소드를 실행하고 있습니까? 최신 버전의 메뉴 클래스를 전체 게시 한 경우 더 나을 것입니다. –

답변

0

이 질문은 gameBall을 추가하기 전에이 기능을 만들고 실행하여 해결했습니다.

private function enterFrameHandler (e:Event):void 
{ 
    // Gravitate the Ball 
    ballY += GRAVITY; // The ball is effected by gravity each frame 

    // Move The Ball 
    gameBall.x += ballX; 
    gameBall.y += ballY; 
}