2014-11-16 51 views
1

以下代碼中的for循環可以工作(在舞臺上放置兩個影片剪輯實例),但它是如何工作的?它是不是創建了多個具有相同名稱的實例?如果我將代碼從註釋部分中顯示的代碼中取出,那麼我會收到關於命名空間衝突的1151錯誤消息。actionscript 3.0在for循環中創建精靈實例

for (var j=0; j<2; j++) { 
    var mascot:Mascot = new Mascot(); 
    mascot.x = 150*j + 100; 
    mascot.y = 100; 
    addChild(mascot); 
} 
/* 
var mascot:Mascot = new Mascot(); 
mascot.x = 100; 
mascot.y = 300; 
addChild(mascot); 

var mascot:Mascot = new Mascot(); 
mascot.x = 250; 
mascot.y = 300; 
addChild(mascot); 
*/ 
+0

只是猜測:for循環有自己的範圍。 – DodgerThud

+0

是的,我考慮過。但是我進行了一些反駁該理論的測試。 –

回答

0

當您不使用循環時出現的錯誤與實例名稱沒有任何關係。

沒有循環,你試圖創建2個具有相同名稱的變量,這是一個編譯錯誤。

將其更改爲以下,它將工作。

var mascot:Mascot = new Mascot(); 
mascot.x = 100; 
mascot.y = 300; 
addChild(mascot); 

mascot = new Mascot(); 
mascot.x = 250; 
mascot.y = 300; 
addChild(mascot); 

這兩個精靈分配一個唯一的實例名稱,因此兩個代碼示例工作正常。

+0

是的,我知道這個錯誤是因爲試圖創建2個變量具有相同的名稱 - 但是,這不是正是「for」循環是幹什麼的?我瞭解不起作用的代碼;我不明白的是「for」循環是如何工作的。 –

+0

不是真的,只要編譯器是關心只有1變量名,即使對於循環迭代N次,你就創建n個'Mascot'實例,但只有1個變量用來引用它們。 –