我已经遇到了这个障碍,如果有人可以帮助我,我将非常感谢。我想要做的是通过加载一个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);
}
我非常感谢你的帮助。
感谢。
答案 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);
}