Sim*_*ver 2 apache-flex monkeypatching preloader
在Flex框架中,可以在加载网站时使用自定义预加载器.
在Adobe文档中,它指定如果在下载700毫秒后下载的应用程序少于一半,则会显示进度条[预加载器]."
但是我总是希望预加载器能够立即显示,因为我知道95%的用户是第一次访问者,而且网站超过500kb.我不希望人们必须等待.7秒才能显示预加载器动画.
我认为理论上可以"修补"框架以消除这个.7秒限制.我没时间弄清楚如何,我以前从未做过.
有人帮忙吗?
小智 7
您应该只扩展DownloadProgressBar,尝试以下代码.我以前用过这个,我找到了jesse warden网站 点击这里 usful获取这方面的信息(我在那里发现了它,这是他的代码的减少版本)
package{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;
import mx.events.FlexEvent;
import mx.preloaders.DownloadProgressBar;
public class Preloader extends DownloadProgressBar
{
/**
* The Flash 8 MovieClip embedded as a Class.
*/
[Embed(source="yourPreloaderFile.swf")]
private var FlashPreloaderSymbol:Class;
private var clip:MovieClip;
public function Preloader()
{
super();
clip = new FlashPreloaderSymbol();
addChild(clip);
}
public override function set preloader(preloader:Sprite):void
{
preloader.addEventListener( FlexEvent.INIT_COMPLETE , onFlexInitComplete );
centerPreloader();
}
private function centerPreloader():void
{
x = (stageWidth / 2) - (clip.width / 2);
y = (stageHeight / 2) - (clip.height / 2);
}
private function onFlexInitComplete( event:FlexEvent ):void
{
dispatchEvent( new Event( Event.COMPLETE ) );
}
protected override function showDisplayForDownloading(time : int, event : ProgressEvent) : Boolean {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
}
之后,只需将主应用程序标记中的preloader属性更改为Preloader类.