gpt4 book ai didi

actionscript-3 - 将加载程序内容转换为AS3中的MovieClips

转载 作者:行者123 更新时间:2023-12-02 10:50:48 26 4
gpt4 key购买 nike

所以这是一个可以工作的装载机:

public var loaders:Array = new Array();
public var loaderClip:Array = new Array();
function loadPersonmenu() {

var person:Array = new Array();
var url:Array = new Array();
var cityUrl:Array = new Array();

for (var i = 0; i < personNumber; i++) {
loaders.push(new Loader());
loaders[i].contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorListener);
loaders[i].addEventListener(MouseEvent.MOUSE_OVER, lightUp);
person.push("person" + i + ".swf");
url.push(new URLRequest(person[i]));
loaders[i].load(url[i]);
loaders[i].x = ((i + 1) * margin) + (i * videoWidth);
loaders[i].alpha = .5;
container.addChild(loaders[i]);
}
}

一切都很棒, super 傻瓜,太棒了。但是,当我添加一些行以将加载程序内容视为MovieClip(以便可以将 stop()函数应用于该行)时,编译器会爆炸成一个错误节。我所有漂亮的外部SWF都消失了。新行位于底部,并添加了注释:
public var loaders:Array = new Array();
public var loaders:Array = new Array();
function loadPersonmenu() {

var person:Array = new Array();
var url:Array = new Array();
var cityUrl:Array = new Array();


for (var i = 0; i < personNumber; i++) {
loaders.push(new Loader());
loaders[i].contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorListener);
loaders[i].addEventListener(MouseEvent.MOUSE_OVER, lightUp);
person.push("person" + i + ".swf");
url.push(new URLRequest(person[i]));
loaders[i].load(url[i]);
loaders[i].x = ((i + 1) * margin) + (i * videoWidth);
loaders[i].alpha = .5;
container.addChild(loaders[i]);
loaderClip[i] = MovieClip(loaders[i].content); // Here is a new line
loaderClip[i].stop(); // Here is another new line
}
}

这些是我的错误:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Menu/loadPersonmenu()
at Menu/fileCompleteListener()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()


奇怪的是,我的函数 fileCompleteListener()甚至没有引用任何这些Loader实例或SWF,这就是为什么我没有在代码中包含它的原因。在第一个孔中这不是问题

最佳答案

您似乎没有给加载程序提供加载任何内容的机会,因此loaders[i].content为null。

在尝试访问加载程序内容之前,请侦听完成事件。因为您使用的是多个加载程序,所以还应该使用i为每个加载程序分配一个实例名称,以便可以使用一个通用的完整侦听器并引用该加载程序名称,以将内容分配给loaderClip的正确索引。

//in the loop
loaders[i].name = i;
loaders[i].contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHandler);

//////////////////////////////////////////////////

//complete handler method
private function loadCompleteHandler(evt:Event):void
{
var index:int = int(Loader(LoaderInfo(evt.target).loader).name);
loaderClip[index] = LoaderInfo(evt.target).content;
}

关于actionscript-3 - 将加载程序内容转换为AS3中的MovieClips,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6560323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com