2011-04-06 16 views
0

我試圖做一個功能,理想情況下,你告訴它去下一個級別,它將所有東西都分類出來,以便爲您轉換到下一個級別。目前我使用這個從1級到2中得到...如何連接閃存的AS3中的變量

level1.GoButton.addEventListener(MouseEvent.CLICK, myClick); 

function myClick(eventObject:MouseEvent) { 

    if (levelText == "Password"){ 
     //mc level transition 
     removeChild(level1); 
     var level2 = new level_2(); 
     addChild(level2); 
     //bring effects to top 
     setChildIndex(screen_FX, numChildren - 1); 
     //bring border to top 
     setChildIndex(Border, numChildren - 1); 
     //diable layer mask mouse 
     level2.masking.mouseEnabled = false; 
     //play mc and transition effects 
     level2.gotoAndPlay(1); 

     } else { 

      wrong.play(0, 1); 

     } 
} 

我在想,如果不知爲何,你可以傳遞到函數可能串聯變量名的變量,例如

removeChild(level[i]); 
    var level[i+1] = new level_[i+1}(); 
    addChild(level[i+1}); 

而且我需要這樣做,它會檢查levelText ==是否按下Enter鍵,以及鼠標單擊GoButton。

回答

3

這裏是這樣做的正確方法:

removeChild(getChildByName("level" + i.toString())); 
var levelClassName:String = "level_" + (i+1).toString(); 
var levelClass:Class = getDefinitionByName(levelClassName); 
var level:DisplayObject = new levelClass(); 
level.name = "level" + (i+1).toString(); 
addChild(level); 

你不需要改變你的變量名,因爲它是當地的,不會對myClick下一次執行存在。

+0

看來你可以接受這一個;) – Kodiak 2011-08-29 14:09:50

+0

有什麼你不喜歡用這個? – Kodiak 2011-09-15 12:38:57

0

我提高了你的答案科迪亞克因爲它幫助我解決了我的問題,幾個小時尋找正確的方式來做這件事情。非常感謝!然而,在使用你的代碼時,我遇到了一些錯誤(至少Flash CS5不喜歡你已經完成的一些事情)。所以如果有其他人碰巧遇到了這個問題,那麼爲了讓它在Flash中運行,我需要做的就是這些。

removeChild(getChildByName("level" + i.toString())); 
    var levelClassName:String = "level_" + (i+1).toString(); 
    var levelClass:Class = getDefinitionByName(levelClassName) as Class; 
    var level:DisplayObject = new levelClass; 
    level.name = "level" + (i+1).toString(); 
    addChild(level); 

不同之處實際上只是一些語法,但它會導致錯誤。具體來說,getDefinitionByName不需要被重新輸入爲一個String類型(也可以通過':String'或者'String'來實現,或者如果需要的話可能會更好)。另外它給了一個對象和一個類之間的不匹配錯誤,所以我不得不在行中添加'as Class'。另一個踢出一些錯誤的地方就是'levelClass:Class'。我發現它根本不需要輸入,但是編譯器不喜歡':Class'。我相信這只是用於輸入變量,如'var levelClass:Class',否則你必須輸入'levelClass作爲Class'或'Class(levelClass)'。我是一個編程noob在這裏,所以這是一個很好的機會我錯了,但無論如何,這是我不得不使用的代碼來完成這項工作。另外不要忘記'import flash.utils.getDefinitionByName;'進入你的包裝。