2010-09-17 49 views
0

我遇到了一个奇怪的问题。我是一个主要的游戏类,它扩展了UIComponent并将所有游戏逻辑basecly粘合在一起 - 主循环。然后,我已经创建了main.mxml文件,它初始化了主要的游戏类,保持游戏屏幕状态(主菜单,游戏,游戏结束等等),并添加了一些ui控制 - flex很棒。但是当问题到达时我正在尝试在Game类中调度的Main.mxml中监听自定义事件。Flex 4 - 从UIComponent扩展自定义类中听到Main.mxml中的事件问题

**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

​​3210

我真的堆在这 - 的东西,看起来简单,但原因不明我什么都不似乎work.I尝试捕获,冒泡事件 - 没有,事件从未在Main.mxml中派发。

+1

Everyhing看起来很适合我。从事件监听器备份。你确定这个活动被解雇吗? – JeffryHouser 2010-09-17 18:44:50

+0

我与Flextras,这一切看起来不错,假设dispatchEvent真的被checkForEndGame调用。唯一我能想到的是:GameStateEvent是否在你的custom.events包中? – 2010-09-17 19:16:26

+0

是的,事件被触发,因为dispatchEvent返回true,如果我在Game.as中的addEventListener监听器得到响应相同的事情,当我在Main.mxml中dispatchEvent,但由于未知原因,当我在Game.as中dispatchEvent并在Main.mxml监听器中监听从未被击中。 – Rudis 2010-09-18 06:37:33

回答

0

问题解决了。实际上,当dispatchEvent因为测试目的我dispatchEvent追加构造函数初始化process.Ok时,我有点撒谎,我的坏我更纯粹的动作经验和舒适 - 但是这是真的,我可以'在构造函数初始化过程完成时,从组件中监听组件中Main.mxml中的事件?因为在此之后,一切正常。