2010-07-26 53 views
0

我已經碰到了這個道路塊,並高度讚賞,如果有人可以幫助我這一點,請。我試圖做的是通過加載一個swf('index.swf')來使用共享運行時庫,該swf具有許多庫對象,這些對象按順序排列,如:AS3使用getDefinition()加載一個類

(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); 

} 

我會非常感謝你的幫助。

謝謝。

回答

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); 
} 
+0

謝謝heavilyinvolved。感謝你的時間和幫助。 – Combustion007 2010-07-28 16:38:54