0

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

然后我做了一个符号,把它放在图书馆里。它被设置为在第 1 帧上不导出,并且 fla 的设置在第 2 帧上导出了所有类。在第二帧之前没有对该对象的引用。

然后,每当我在没有选中“在第一帧中导出”框的情况下编译时,flash 就会崩溃。

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

然后,事实证明它没有加载影片剪辑,只是实例化了该类。同样,这可以通过在第 1 帧中导出来解决,但我真的不能这样做。

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

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

谢谢您的帮助!

编辑:长话短说,我所需要的只是某种加载影片剪辑的方法,以便它可以被使用和可见以及一切。

编辑:有没有办法通过 AS3 强制加载影片剪辑?

4

1 回答 1

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. 尝试阶段失效,虽然,因为我不完全理解你的设置,这只是一个疯狂的猜测。

HTH,乔治

于 2010-02-11T00:00:24.497 回答