我想在舞台上有多个movieClip 符号实例,因此每个实例都加载不同的图像。movieClip 元件应该有 2 帧。第一帧包含加载器进度条的动作脚本;以及带有 UILoader 的第二帧,它显示外部图像。
我知道如何为 swf 文件实现预加载器。而且我知道如何使用 UILoader 使用 movieClip 符号并使用不同的图像创建多个实例。
因为我想把这个文件放到网上,所以我需要每个实例的预加载器。但我不知道如何在实例中使用预加载器(它不起作用;实际图像是在影片剪辑的第二帧还是从外部加载)
我想在舞台上有多个movieClip 符号实例,因此每个实例都加载不同的图像。movieClip 元件应该有 2 帧。第一帧包含加载器进度条的动作脚本;以及带有 UILoader 的第二帧,它显示外部图像。
我知道如何为 swf 文件实现预加载器。而且我知道如何使用 UILoader 使用 movieClip 符号并使用不同的图像创建多个实例。
因为我想把这个文件放到网上,所以我需要每个实例的预加载器。但我不知道如何在实例中使用预加载器(它不起作用;实际图像是在影片剪辑的第二帧还是从外部加载)
这是因为 Stage 的行为与 MovieClip 不同。您需要以编程方式执行预加载器。为 MovieClip Symbol 定义一个类,并创建一个像预加载器一样工作的其他 MC 的实例,然后使其可见并在图像更改时播放它添加一个 eventListener:addEventListener(ProgressEvent.PROGRESS, updateInfo);
这可以简单地通过使用progressBar 和加载器类来完成。
import flash.display.Loader;
import fl.controls.ProgressBar;
import flash.events.Event;
import fl.containers.UILoader;
var myLoader:Loader = new Loader();
var my_pb:ProgressBar = new ProgressBar();
addChild(my_pb);
myLoader.load(new URLRequest("http://www.SomeImageURL...."));
my_pb.source = myLoader.contentLoaderInfo;
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completefunction);
function completefunction(e:Event):void
{
removeChild(my_pb);
myLoader.content.width = 200;
addChild(myLoader);
}
要让movieClip 符号使用不同的图像,我们只需向movieClip 添加一个字符串变量,并在每次创建它的新实例时将url 传递给该变量。