AS3预加载器悲伤,无法从库中加载符号

时间:2010-02-10 21:09:13

标签: actionscript-3 movieclip preloader

我创建了一个AS3预加载器,并将其代码放在第一帧上。

然后我做了一个符号,并把它放在库中。它被设置为在帧1上不导出,并且fla的设置在第二帧上导出了所有类。直到第二帧才有对该对象的引用。

然后,只要我编译时没有选中“在框架中导出”框,flash就会崩溃。

为了解决这个问题,一位朋友建议我在第3帧开始我的游戏逻辑,因此它将正确加载第2帧。这似乎工作正常,该类正在实例化。

然后,事实证明它没有加载movieclip,只是实例化了类。同样,这可以通过第1帧中的导出来修复,但我实在承担不起。

同一位朋友建议我在第3帧的舞台上放置一个符号实例,并在第4帧上执行游戏逻辑。他们说这会正确初始化动画片段。

但事实并非如此。如何在不导出到第1帧的情况下加载整个符号,图形和所有符号?这个单个符号可能包含10-20 MB的图形,因此需要预先加载。

感谢您的帮助!

编辑:长话短说,我只需要一些方法来加载一个动画片段,以便它可以被使用,并且可以看到所有内容。

编辑:有没有办法通过AS3强制加载动画片段?

1 个答案:

答案 0 :(得分:1)

难以从描述中找出答案。

如果你制作一个新的.fla文件,请将你的大(10-20MB)剪辑粘贴到第2帧, 将导出帧设置为2,然后尝试从第1帧预加载并访问第2帧中的大剪辑内容,是否会出现相同的错误?

说你在第1帧中有这个:

stop();
this.loaderInfo.addEventListener(Event.COMPLETE, onComplete);

function onComplete(event:Event):void{
gotoAndStop(2);
}

和第2帧:

trace(myLargeClip);//where myLargeClip would be your 10-20MB clip

应该没问题,否则,如果跟踪你的大剪辑返回null,你可能想要尝试使舞台无效:

第2帧:

stage.addEventListener(Event.RENDER,onRender);
stage.invalidate();

function onRender(event:Event):void{
trace(myLargeClip);
}

基本上我的建议是:

  1. 隔离问题。看看你的大剪辑是否在类似但简化的场景中导致问题以及为什么,一旦你得到修复就在主fla中使用它。
  2. 尝试舞台失效,但是,因为我不完全了解你的设置,所以这只是一个疯狂的猜测。
  3. HTH, 乔治