Flex Mobile Event Listener не работает - PullRequest
0 голосов
/ 08 августа 2011

У меня проблемы с получением прослушивателя событий для работы в мобильном приложении (встроенный в 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);
    }
}

}

И в моем представлении мобильного приложения две функции длявызовите обработчик событий, а затем обработчик событий, который прослушивает завершенное событие:

    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");
}

Проблема, с которой я столкнулся, заключается в том, что прослушиватель событий не запускается, до этого момента все работает нормально.Он работает в веб-приложении, но по какой-то причине не в мобильном приложении.Я новичок в разработке мобильных приложений. Является ли это ограничением мобильных приложений AIR?

Любая помощь / предложения приветствуются.Спасибо

1 Ответ

0 голосов
/ 11 августа 2011

Может сделать var parser:BMSDataParser закрытой переменной класса, а в событиях creationComplete или initialized класса добавить parser.addEventListener(BMS_Event.COMPLETE_EVENT, bmstest);

Еще одна вещь: если вы используете ViewNavigatorApplication с Views, представления не создаются, пока они не будут помещены в стек представлений, например, navigator.pushView(PayNowView);, поэтому любые слушатели не будут активированы, если они не отображаются первыми

...