Flex Mobile事件侦听器未触发

时间:2011-08-08 12:26:23

标签: mobile flex4 event-handling flash-builder4.5

我无法在移动应用中使用事件监听器(内置Flash Builder 4.5,Flex SDK 4.5.1)

我有一个名为BMS_Event.as的事件类,如下所示:

package model
{
import flash.events.Event;

public class BMS_Event extends Event
{

    public static var COMPLETE_EVENT:String = "BMSData_Complete";

    public static var FAULT:String = "BMSDatafault";

    public var data:*;

    public function BMS_Event(type:String, data:*=null, bubbles:Boolean=false, cancelable:Boolean=false)
    {
        this.data = data;
        super(type, bubbles, cancelable);
    }

}

}

派遣事件的类:

package model
{
import flash.events.Event;
import flash.events.EventDispatcher;

import model.BMS_Event;

public class BMSDataParser extends EventDispatcher
{
    public function BMSDataParser()
    {
        trace("BMSDataParser function");
        var BMSDataCompleteEvent:BMS_Event = new BMS_Event(BMS_Event.COMPLETE_EVENT);
        dispatchEvent(BMSDataCompleteEvent);
    }
}

}

在我的移动应用程序视图中,有两个函数用于调用eventparser,然后是一个用于侦听complete事件的eventlistener:

    import model.BMSDataParser;
import model.BMS_Event;

protected function getData():void
{
    var parser:BMSDataParser = new BMSDataParser();
    parser.addEventListener(BMS_Event.COMPLETE_EVENT, bmstest);
}

private function bmstest(e:BMS_Event):void
{
    trace("bmstest function");
}

我遇到的问题是事件监听器没有触发,一切正常,直到那一点。它可以在Web应用程序中运行,但无论出于何种原因,它都不是移动应用程序。 我是移动应用程序开发的新手 - 这是AIR移动应用程序的限制吗?

任何帮助/建议非常感谢。 感谢

1 个答案:

答案 0 :(得分:0)

也许将var parser:BMSDataParser设为私有类变量,并在该类的creationCompleteinitialized个事件中添加parser.addEventListener(BMS_Event.COMPLETE_EVENT, bmstest);

还有一件事:如果你使用带View的ViewNavigatorApplication,那么在将视图推到视图堆栈上之前不会创建视图,例如navigator.pushView(PayNowView);,因此除非先显示

,否则不会激活任何侦听器