我的flex应用程序中有一个预加载器:
public class Preloader extends DownloadProgressBar
{
private var _preloader:PreloaderAnimation;
public function Preloader()
{
super();
_preloader = new PreloaderAnimation;
addChild(_preloader);
}
public override function set preloader(preloader:Sprite):void
{
preloader.addEventListener(ProgressEvent.PROGRESS , onSWFDownloadProgress );
preloader.addEventListener(Event.COMPLETE , onSWFDownloadComplete );
preloader.addEventListener(FlexEvent.INIT_PROGRESS , onFlexInitProgress );
preloader.addEventListener(FlexEvent.INIT_COMPLETE , onFlexInitComplete );
}
.........
private function onFlexInitComplete( event:FlexEvent ):void
{
dispatchEvent(new Event(Event.COMPLETE));
}
}
Flex Initialize完成后,预加载器将调度Event.COMPLETE。但我希望能够在我的flex应用程序中收听该事件并在发送时执行操作。当它发送时,预加载器会自行移除,这就是它至关重要的原因。关于如何从我的flex应用程序收听的任何想法?
关心Adlertz
答案 0 :(得分:1)
预加载器收到应用程序的CREATION_COMPLETE事件后会触发Preloader的INIT_COMPLETE事件。
初始化的顺序是:
在这种情况下,这意味着Application.CREATION_COMPLETE等同于Preloader.INIT_COMPLETE - 如果您想知道预加载器何时调度INIT_COMPLETE,那么请监听CREATION_COMPLETE。
您可以通过查看Preloader类的源代码来确认所有这些。
答案 1 :(得分:0)
我不确定你想要达到的目的是什么。如果您只是想在初始化应用程序或创建完成时执行某些操作,则可以在应用程序上使用creationComplete或intialize事件。一旦预加载器完成,您是否有理由需要知道(假设与应用程序中的creationComplete事件不同,我认为不会这样)?
更新
所以你只是希望能够从预加载器中听到完整的事件吗?
尝试此操作:在应用程序上创建一个initalize事件处理程序,并尝试将事件侦听器附加到预加载器。它看起来像这样(这没有经过测试,所以它可能有拼写错误等)
public function applicationInitalize_handler ( e:FlexEvent ) : void
{
Application.preloader.addEventListener(Event.COMPLETE,myEventHandler);
}
看看是否可行。
答案 2 :(得分:0)
我需要知道预加载器何时完成的原因是因为我想直接播放电影,其中电影中的第一帧看起来像预加载器的图像。
显示预加载器,直到从预加载器发送Event.COMPLETE事件为止。
如果要在预加载器完成和正在显示的应用程序之间显示某些内容,则需要在调度Event.COMPLETE之前在预加载器中执行此操作。如果您不发送COMPLETE事件,您的预加载器将永久显示。
(如果您很好奇,请查看'displayClassCompleteHandler'函数中的Flex Preloader源代码)
答案 3 :(得分:0)
Flash应用程序完成初始化后会触发Flex.INIT_COMPLETE。所以它在主应用程序的初始化事件之后完全发送。
答案 4 :(得分:0)
在Flex应用程序中,您需要侦听Application.applicationComplete事件。
如果您的Preloader类中有一个看起来像
的函数private function onFlexInitComplete( event:FlexEvent ):void
{
dispatchEvent(new Event(Event.COMPLETE));
}
您需要确保应用程序文件的标题看起来像
<s:Application
preloader = "MyPreloader"
applicationComplete="onApplicationComplete();" >
使用此设置,只要您决定从预加载器调度Event.COMPLETE事件,onApplicationComplete()就会被触发。
答案 5 :(得分:-1)
应用程序的APPLICATION_COMPLETE事件似乎是在Preloader激活Event.COMPLETE事件之后发出的......只是听听这个?