Flex 4 - проблема прослушивания события в Main.mxml из расширенного пользовательского класса UIComponent - PullRequest
0 голосов
/ 17 сентября 2010

Я столкнулся со странной проблемой. У меня есть основной игровой класс, который расширяет 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.

1 Ответ

0 голосов
/ 18 сентября 2010

Проблема решена. На самом деле, я немного соврал о том, когда dispatchEvent, потому что для целей тестирования я отправляю конструктор appendEvent, инициализирующий процесс. Ок, мой плохой, я более опытен и доволен чистым actionScript - но правда ли, что я не могу прослушивать событие в приложении Main.mxml из компонента, пока выполняется инициализация конструктора? Потому что после этого все работает гладко.

...