2008-09-29 30 views
1

因此,在Flex應用程序中,我通過創建它並調用parent.addChild()來添加一個新的GUI組件。但是在某些情況下,這會導致Flex的腸道出現錯誤。原來,的addChild實際上沒有:addChild如何選擇錯誤的插入索引?

return addChildAt(child, numChildren); 

在它打破了的情況下,莫名其妙的numChildren的是關閉的一個。導致此錯誤:

RangeError: Error #2006: The supplied index is out of bounds. at flash.display::DisplayObjectContainer/addChildAt() at mx.core::Container/addChildAt() at mx.core::Container/addChild() . . at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.core::UIComponent/dispatchEvent() at mx.controls::SWFLoader::contentLoaderInfo_completeEventHandler()

這是Flex中的一個錯誤還是我如何使用它?看起來它可能是一個線程錯誤,但由於Flex不支持有點令人困惑的線程。

+0

你能重新設置錯誤一些換行符,它使後硬的其餘部分閱讀! – 2008-09-29 09:43:27

回答

0

我注意到,在重新顯示已經在顯示列表中的UIComponent時,最常發生這種情況。你在這種情況下重新養育嗎?

+0

必須檢查。任何想法如何解決它雖然? – MidnightGun 2008-09-29 11:40:16

1

在組件完成初始化之前是否可能添加子組件?也許嘗試在Event.COMPLETE廣播後添加一個孩子?

它可能不支持線程,但它仍然異步...

+0

如果我沒有記錯的話,我也有同樣的問題,這是罪魁禍首。 – hasseg 2008-09-30 09:24:13

0

OK,像塗料,我是想孩子加入,即使它已經在那裏了,因此混淆「錯誤插入索引的容器「 信息。

1

numChildren沒有有效地引用子數組中的現有索引。 AS3中的數組索引從0開始。這意味着數組中的最後一項對於索引numChildren - 1而不是numChildren。

嘗試addChildAt(child,numChildren - 1);

+0

如果我可以不止一次地對此贊成,我會!看到原來的問題,就像「等一下......」 – 2012-06-02 01:23:12

0

cf. http://forums.devshed.com/flash-help-38/scroll-pane-scroll-bars-not-working-818174.html - 您需要做的是將孩子添加到顯示對象,然後將滾動窗格的源設置爲顯示對象。有點兒像這樣...

代碼:

var myDisplay : DisplayObject = new DisplayObject(); 

myDisplay.addChild(myChild1); 
myDisplay.addChild(myChild2); 
myDisplay.addChild(myChild3); 
myDisplay.addChild(myChild4); 

ScrollPane.source = myDisplay; 
ScrollPane.update();