2014-04-01 25 views
0

我正在爲一個任務進行點註冊系統,其中有6個玩家參與3個競賽。我的程序有一個佈局,用於輸入他們收到的點的所有文本框都放在網格中。爲了能夠使用這些框中的文本,我將它們添加到數組中。將對象轉換爲TextField並添加限制時出錯

因爲我的文本框是約3層深在幾個影片剪輯,我提出了可變命名位置

var plass:Object = = regHoved.regPoeng.innhold; 

我然後由陣列,其中,I由寫作添加的每個文本框:

poengInputBokser[0] = new Array(plass.inputPng1Øvls1,plass.inputPng1Øvls2,plass.inputPng1Øvls3); 

等等

我的問題是,閃光燈不會讓我使用「for each」循環或兩個正常的「for」循環語句來添加.restrict。

我得到的錯誤是:

類型錯誤:錯誤#1034:類型強制失敗:無法轉換[] @ 292dfd59到API元素flash.text.TextField。 在spillregistrerer_fla :: MainTimeline /幀1()

我的代碼如下:

var plass:Object = regHoved.regPoeng.innhold; 
//boksene for å legge inn poeng 
var poengInputBokser:Array = new Array(); 
poengInputBokser[0] = new Array(plass.inputPng1Øvls1,plass.inputPng1Øvls2,plass.inputPng1Øvls3); 
poengInputBokser[1] = new Array(plass.inputPng2Øvls1,plass.inputPng2Øvls2,plass.inputPng2Øvls3); 
poengInputBokser[2] = new Array(plass.inputPng3Øvls1,plass.inputPng3Øvls2,plass.inputPng3Øvls3); 
poengInputBokser[3] = new Array(plass.inputPng4Øvls1,plass.inputPng4Øvls2,plass.inputPng4Øvls3); 
poengInputBokser[4] = new Array(plass.inputPng5Øvls1,plass.inputPng5Øvls2,plass.inputPng5Øvls3); 
poengInputBokser[5] = new Array(plass.inputPng6Øvls1,plass.inputPng6Øvls2,plass.inputPng6Øvls3); 

/*for each(var boks:TextField in poengInputBokser){ 
    boks.restrict = "0-9"; 
    //Denne Funker ikke! Vil gi error om at det ikke kan konverters 
} */ 

回答

0

所以我想出了一個解決方案,沒有改變,只是添加一個雙循環!

for each(var boks:Array in poengInputBokser){ 
    for (var i:int = 0; i < 3; i++){ 
     boks[teller].restrict = "0-9"; 
    } 
} 

這裏的「伯克」變量在我的第一陣列中的每個新的數組,然後我就加內新的循環,即進入每個文本框在我的陣!

1

快速診斷「它不是一個文本框」 :),它不會爲每個越過一個數組中!不文本字段

嘗試:

foreach(var item:Array in poengInputBokser) 
{ 
    var length:int = item.length; 
    for(var i:int = 0; i<length; i++) 
    { 
     var tf:TextField = item[i] as TextField; 
     if (tf!=null) tf.restrict = "0-9"; 
    } 
} 
+0

您應該爲這樣的代碼添加錯誤處理,也許只有這些數組元素的一部分是TextField。 – Vesper

+0

顯然,但它是一個快速的解決方案:)也沒有限制,poengInputBokser將包含數組:D –

0

另一種方法是使用一個平面數組,而不是數組的數組爲你做。

var poengInputBokser:Array = new Array(); 
poengInputBokser.push(plass.inputPng1Øvls1,plass.inputPng1Øvls2,plass.inputPng1Øvls3); 
poengInputBokser.push(plass.inputPng2Øvls1,plass.inputPng2Øvls2,plass.inputPng2Øvls3); 
poengInputBokser.push(plass.inputPng3Øvls1,plass.inputPng3Øvls2,plass.inputPng3Øvls3); 
poengInputBokser.push(plass.inputPng4Øvls1,plass.inputPng4Øvls2,plass.inputPng4Øvls3); 
poengInputBokser.push(plass.inputPng5Øvls1,plass.inputPng5Øvls2,plass.inputPng5Øvls3); 
poengInputBokser.push(plass.inputPng6Øvls1,plass.inputPng6Øvls2,plass.inputPng6Øvls3); 

對於平面陣列你的代碼應該工作。

相關問題