AS3使用getDefinition()加载类

时间:2010-07-26 21:33:58

标签: actionscript-3 scripting action

我已经遇到了这个障碍,如果有人可以帮助我,我将非常感谢。我想要做的是通过加载一个swf('index.swf')来使用共享运行时库,它有许多按顺序命名的库对象,例如:

(orange1,orange2,orange3,orange4) (RED1,RED2,RED3,RED4)

我可以加载swf('index.swf')而不会出现任何问题,甚至可以加载正确的库资源,但我必须将全名声明为字符串,例如getDefinition('orange1')。我想要做的是匹配字符串的前三个字母然后运行for循环来加载所有匹配前三个字母的类。我通常可以通过使用indexOf()方法来实现这一点。

这是我的代码:

public function loadContent():void
{

ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onloadHandler);
ldr.load(req);

}

public function progressHandler(eProgress:ProgressEvent):void
{
var percent:Number = (eProgress.bytesLoaded / eProgress.bytesTotal);
trace(percent);
}

public function onloadHandler(e:Event):void
{
// THIS IS WHERE I AM TRYING TO MATCH THE STRING
var str:String = "red";
str = (str.indexOf(str));
var ref1:Class = e.currentTarget.applicationDomain.getDefinition(str) as Class
trace(ref1);

}

我非常感谢你的帮助。

感谢。

1 个答案:

答案 0 :(得分:3)

我认为您的问题在于以下几行代码:

str = (str.indexOf(str));
var ref1:Class = e.currentTarget.applicationDomain.getDefinition(str) as Class 

indexOf()返回指定子字符串第一次出现的索引,如果子字符串不存在,则返回-1。所以,你将一些int(-1或0,1,2等)的字符串表示传递给getDefinition()...这可能没有返回类引用。

假设您有一些名为red1,red2,red3,red4的剪辑,我会执行以下操作:

for (var i:int=0; i < 4; i++) {
     var classRef:Class = e.currentTarget.applicationDomain.getDefinition("red" + (i+1).toString()) as Class;
     trace(classRef);
}