0
预加载器在3%之后不会显示,就像它应该有的一样,它会在文件完全加载时显示。Flash预加载器:未正确预加载?
有人可以帮我解释一下我做错了什么吗?我的代码位于第一帧,它使用了一个矩形对象和一个文本字段对象。在其他预加载器中,我看到了这样的代码,它使用了一个100帧的动画片段。这是否有所作为?我有代码更新矩形的宽度,以及更新动态文本框中的文本。
我在第一帧整个代码:
import flash.display.MovieClip;
import flash.events.ProgressEvent;
function update(e:ProgressEvent):void {
//trace(e.bytesLoaded);
if (loader) {
loader.text = Math.round(e.bytesLoaded*100/e.bytesTotal).toString() + " %";
}
if (bar) {
bar.width = Math.round(e.bytesLoaded*100/e.bytesTotal)*2;
}
}
loaderInfo.addEventListener(ProgressEvent.PROGRESS, update);
var loader:TextField = new TextField();
var bar:preloader_bar = new preloader_bar();
addEventListener(Event.ENTER_FRAME, checkFrame);
var loaderTextFormat:TextFormat = new TextFormat("_sans", 16, 0x000000, true);
loaderTextFormat.align = TextFormatAlign.CENTER;
loader.defaultTextFormat = loaderTextFormat;
bar.color = 0x000000;
addChild(bar);
addChild(loader);
// Extra test for IE
var percent:Number = Math.floor((this.loaderInfo.bytesLoaded*100)/this.loaderInfo.bytesTotal);
if (percent == 100) {
nextFrame();
}
stop();
if (loader) {
loader.x = (stage.stageWidth - loader.width)/2;
loader.y = stage.stageHeight/2;
}
if (bar) {
bar.x = (stage.stageWidth - 200)/2;
bar.y = (stage.stageHeight - bar.height)/2;
}
function checkFrame(e:Event):void {
if (currentFrame == totalFrames) {
removeEventListener(Event.ENTER_FRAME, checkFrame);
startup();
}
}
function startup():void {
// hide loader
stop();
loaderInfo.removeEventListener(ProgressEvent.PROGRESS, update);
var mainClass:Class = Main as Class;
addChild(new mainClass() as DisplayObject);
}
它真的应该显示出来,有没有一些花哨的导出选项,我需要改变?我用带宽分析器试了一下,它只在100%标记后显示。
编辑:progress_bar是为动作导出的动画片段。
我会测试它... – Cyclone 2010-02-05 19:56:48
是的,这确实起作用。感谢您的帮助! – Cyclone 2010-02-05 20:01:36
高兴地帮助^ _^ – 2010-02-05 23:40:51