2013-03-16 83 views
0

我很難弄清楚如何爲我的遊戲製作菜單。我想要的只是當遊戲第一次啓動時,有一個播放按鈕,點擊後可以開始遊戲。在AS3中製作遊戲菜單

現在我得的MainMenu類:

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類中引用Main類。因爲我有函數:在我的Main類中玩遊戲,並帶有啓動遊戲所需的所有代碼。我無法弄清楚如何從我的MainMenu類中調用該函數,或者讓它在我的Main類中觸發它。

我想我需要派遣一個事件,但我似乎無法理解事件派遣是如何工作的。

有沒有人知道如何派遣一個事件在我的情況下,或任何其他想法?

+0

通常情況下,你會在你的Main類中照顧這一切。對於我的遊戲,我製作了一個按鈕實例,點擊後會觸發一個隱藏按鈕並加載第一級的單獨事件。 – David 2013-03-16 15:48:42

回答

1

您可以通過只是讓一個new Event()創建簡單的自定義事件:在Main.as

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

然後你就可以監聽該事件,像這樣:

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

我得到錯誤:故障]異常,信息= ArgumentError:錯誤#1063:類:: MainMenu/clickedPlayButton()上的參數計數不匹配。預期0,得到1. – Craig 2013-03-17 17:37:22

+0

哦,事件監聽器的回調需要接受一個事件參數。我編輯了我的答案以添加'e:MouseEvent'。 – 2013-03-17 17:57:14

+0

謝謝! :)真的很感謝你的幫助。 – Craig 2013-03-17 21:50:33

0

做這樣的事情在你的playClicked功能。

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

將所有遊戲圖形和界面添加到GameScreen動畫片段。