2011-04-08 32 views
2

另一天另一個問題unfortunately-這段代碼的最後一行是罪魁禍首:錯誤2006年提供的索引超出範圍

    uiBar = new mcUiBar(); 
     uiBar.x=-15; 
     uiBar.y=-5; 
     addChildAt(uiBar, numChildren-1); 

現在我研究,所以我知道它有什麼用的陣列比任何東西都大,但我沒有搞清楚。我很難過。我很感謝你的幫助。乾杯

回答

4

的超出範圍的錯誤那應該拋出一個錯誤基本上是說,你提供的索引值「超出範圍「的顯示對象容器中的索引數組。可接受的範圍是從0n+1,其中n是最高的兒童指數。另一種說法是0numChildren。所以喬治是對的,你會遇到問題numChildren - 1 = -1

如果您要將子項添加到下一個圖層圖層中,請使用上面的if語句。但是,如果您只是想將其添加到頂層,則應使用addChildAt(child, numChildren)addChild(child)這些是同義詞。

+0

是Mims ...感謝您的澄清。我是新來的所有這btw ...並感謝您分享您的知識!我也學習Java,但我更喜歡動作3.0大聲笑。 – londonbird 2011-04-12 02:39:46

1

代碼太少,但最後一行: addChildAt(uiBar, numChildren-1);似乎是問題所在。

如果還沒有添加子項會發生什麼情況(numChildren爲0)? 因爲你想在深度/指數加uiBar -1

嘗試addChildAt(uiBar, numChildren > 0 ? numChildren-1 : 0);

+0

Flash CS5喜歡你的代碼!在我解決了這個問題之後(我認爲我用上面的代碼解決了這個問題),我得到了錯誤,它根本不喜歡if語句並且不得不刪除它,但是你持續地努力解決這個Index Out Bounds錯誤。乾杯x現在我必須清除這個1009錯誤lol – londonbird 2011-04-08 11:32:28

+0

奇怪的...?只是一個緊湊的if/else。 Goodluck與1009(hunch:檢查null實例)!另外,你可能會發現這個網站很方便:http://www.actionscripterrors.com/(http://www.actionscripterrors.com/?s=1009&searchsubmit=Find) – 2011-04-08 11:35:59

+0

@londonbird addChildAt(uiBar,numChildren> 0?numChildren- 1:0);在顯示列表的頂部添加uiBar,與addChild(uiBar)相同。爲什麼在這種情況下需要addChildAt()? – 2011-04-08 21:16:44