所以我创建了一个太空射击游戏。我的文档类是发动机,它看起来像这样:AS3 - 遇到基本游戏类问题
package Classes
{
import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.Event;
import flash.events.MouseEvent;
public class Engine extends MovieClip
{
private var startMenu:StartMenu;
private var numberOfStars:int = 80;
public static var enemyList:Array = new Array();
private var spaceShip:Ship;
private var hud:HUD;
public function Engine()
{
startMenu = new StartMenu();
stage.addChild(startMenu);
startMenu.x = (stage.stageWidth/2);
startMenu.y = (stage.stageHeight/2);
}
private function startGame()
{
stage.removeChild(startMenu)
spaceShip = new Ship(stage);
stage.addChild(spaceShip);
spaceShip.x = (stage.stageWidth/2);
spaceShip.y = (stage.stageHeight/2);
spaceShip.addEventListener("hit", shipHit);
hud = new HUD(stage); //create the HUD
stage.addChild(hud); //and display it.
for (var i:int = 0; i < numberOfStars; i++)
{
stage.addChildAt(new Star(stage), 1);
}
addEventListener(Event.ENTER_FRAME, createFighter);
}
}
因此,大家可以看到我呼吁所谓的StartMenu另一个类。这是我遇到的麻烦:这里是代码(或缺乏存在的)
package Classes
{
import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.*;
public class StartMenu extends MovieClip
{
public function StartMenu()
{
button1.addEventListener(MouseEvent.CLICK, buttonClicked);
}
private function buttonClicked(e:MouseEvent)
{
}
}
}
(忽略缩进错误,它是真正的代码正确) 好了,想象一个按钮显示在屏幕上。此按钮是StartMenu类的一部分,正在侦听MouseEvent.CLICK。我需要以某种方式返回到Engine类并调用函数startGame(),但我不能只做Engine.startGame(),我已经尝试将该函数设置为一个公共函数,并且我已经尝试将该函数设置为公共静态函数。没有运气。请帮助??任何方法都可以,我只需要一个方法让这个类在点击按钮后进入startGame函数!