2013-03-16 4 views
0

내 게임 메뉴를 만드는 방법을 찾는 데 어려움을 겪고 있습니다. 내가 원했던 것은 게임이 처음 시작될 때를위한 버튼이었습니다. 클릭하면 게임을 시작합니다.AS3에서 게임 메뉴 만들기

package Classes 
{ 
import flash.display.Sprite; 
import flash.events.Event; 
import flash.events.MouseEvent; 
import Main; 

/** 
* Main Menu 
* @author Craig Jackson 
*/ 

public class MainMenu extends Sprite 
{ 

    public function MainMenu() 
    { 
     var playButton:Sprite = new Sprite(); 
     playButton.graphics.beginFill(0x666666); 
     playButton.graphics.drawRect(300, 300, 100, 100); 
     playButton.graphics.endFill(); 

     addChild(playButton); 

     playButton.addEventListener(MouseEvent.CLICK, clickedPlayButton); 
    } 

    public function clickedPlayButton():void 
    { 
     // Not sure what to do here 
    } 

} 

} 내 주요 클래스에서

, 나는 MAINMENU 클래스의 인스턴스를 생성하고 무대에 추가 :

는 지금은 MAINMENU 클래스가 있습니다. 이것은 잘 작동합니다. 내 문제는 MainMenu 클래스의 Main 클래스를 참조하는 것과 관련이 있습니다. 게임을 시작하는 데 필요한 모든 코드가 포함 된 main 클래스의 playGame 함수가 있기 때문입니다. 내 MainMenu 클래스에서 해당 함수를 호출하거나 Main 클래스에서이 함수를 트리거하는 방법을 알아낼 수 없습니다.

이벤트를 파견해야 할 필요가 있다고 생각하지만 이벤트 발송 방식이 어떻게 작동하는지 이해할 수 없습니다.

누군가 내 이벤트 또는 다른 아이디어에서 이벤트를 보내는 방법을 아는 사람이 있습니까?

menu.addEventListener("PLAY_CLICKED", playClicked); 
+0

일반적으로 Main 클래스에서이 모든 것을 처리 할 것입니다. 내 게임의 경우 버튼 인스턴스를 만들었습니다.이 인스턴스를 클릭하면 버튼을 숨기고 첫 번째 레벨을로드하는 별도의 이벤트가 트리거됩니다. – David

답변

1

.

removeChild(playButton); 
gameScreen = new GameScreen(); //Assuming you have a movieclip called GameScreen which holds your gamescreen 
addChild(gameScreen); 

GameScreen 무비 클립에 모든 게임 그래픽 및 인터페이스를 추가하십시오.

+0

오류 : 예외가 발생했습니다. 정보 = ArgumentError : 오류 # 1063 : Classes :: MainMenu/clickedPlayButton()에서 인수 수가 불일치합니다. 예상되는 0은 1이됩니다. – Craig

+0

오, 이벤트 리스너의 콜백은 이벤트 매개 변수를 받아 들여야합니다. 내 대답을 편집하여'e : MouseEvent'를 추가했습니다. –

+0

감사! :) 정말 도움을 주셔서 감사합니다. – Craig

0

이 playClicked 기능이 같은 작업을 수행 : 당신이 그렇게 좋아하는 이벤트를 수신 할 수 Main.as에 그런

public function clickedPlayButton(e:MouseEvent):void 
{ 
    dispatchEvent(new Event("PLAY_CLICKED")); 
} 

: 당신은 단지 new Event()함으로써 간단한 사용자 정의 이벤트를 만들 수 있습니다