2013-03-16 120 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动画片段。