Я столкнулся со странной проблемой. У меня есть основной игровой класс, который расширяет UIComponent и склеивает всю игровую логику вместе - основной цикл. Затем у меня есть файл main.mxml приложения, который инициализирует основной игровой класс, следите за состояние игрового экрана (главное меню, игра, игра закончена и т. д.) и добавьте некоторый элемент управления пользовательского интерфейса - для этого отлично подходит flex. Тем не менее возникает проблема, когда я пытаюсь прослушать пользовательское событие в Main.mxml, отправляемое в классе Game .
**GameStateEvent.as**
public class GameStateEvent extends Event
{
public static const GAME_OVER:String = "gameOver";
public static const NEW_LEVEL:String = "newLevel";
public function GameStateEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
override public function clone():Event
{
return new GameStateEvent(type, bubbles, cancelable);
}
}
Game.as
[Event(name="gameOver", type="custom.events.GameStateEvent")]
public class Game extends UIComponent
private function checkforEndGame():void
{
if(_gameOver == true)
{
dispatchEvent(new GameStateEvent(GameStateEvent.GAME_OVER)); //true
}
}
Main.mxml
<fx:Script>
<![CDATA[
protected function game_gameOverHandler(event:GameStateEvent):void
{
//This event never got dispatched
}
]]>
</fx:Script>
<game:Game id="game" includeIn="GameState" gameOver="game_gameOverHandler(event)"/>
Я действительно в этом разбираюсь - все кажется простым, но по неизвестным мне причинам, похоже, ничего не работает. Я пытался захватить, всплывающее событие - ничего, событие никогда не отправлялось в Main.mxml.