2010-04-08 71 views
1

我當前正在嘗試添加一個自定義類,它將UIComponent的子類同時添加到樹和畫布,但是當我嘗試通過拖動重新排序樹時,出現此錯誤:在Flex中添加UIComponent到畫布和樹3

TypeError:錯誤#1010:術語未定義且沒有屬性。 at mx.controls :: Tree/get firstVisibleItem()[C:\ autobuild \ 3.2.0 \ frameworks \ projects \ framework \ src \ mx \ controls \ Tree.as:764] at flash.utils :: ByteArray/writeObject() at flash.desktop :: Clipboard/putSerialization() at flash.desktop :: Clipboard/convertFlashFormat()flash.desktop :: Clipboard/setData() at mx.managers :: NativeDragManagerImpl/doDrag() )[C:\ autobuild \ 3.2.0 \ frameworks \ projects \ airframework \ src \ mx \ managers \ NativeDragManagerImpl.as:282] at mx.managers :: DragManager $/doDrag()[C:\ autobuild \ 3.2。 0 \ frameworks \ projects \ framework \ src \ mx \ managers \ DragManager.as:243] at mx.controls.listClasses :: ListBase/dragStartHandler()[C:\ autobuild \ 3.2.0 \ frameworks \ projects \ framework \ src \ mx \ controls \ listClasses \ ListBase.as:9085] 在flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.core :: UIComponent/dispatchEvent()[C:\ autobuild \ 3.2.0 \ frameworks \ projects \ framework \ src \ mx \ core \ UIComponent.as:9298] at mx.controls.listClasses :: ListBase/mouseMoveHandler()[C:\ autobuild \ 3.2.0 \ frameworks \ projects \ framework \ src \ mx \ controls \ listClasses \ ListBase.as:8822]

當我不將UIComponent添加到畫布時,這個錯誤不會發生,任何人都不知道爲什麼會發生這種情況?

+0

你想添加你的類的同一個實例或不同的實例嗎? – 2010-04-09 08:30:36

回答

0

您收到此錯誤的原因是樹或畫布無法訪問您的自定義組件屬性或方法。雖然你的組件確實進入了顯示對象,但它仍然需要知道如何訪問它。

+0

這似乎並不是這種情況,將我的自定義UIComponent添加到畫布或樹的作品,但不是同時添加到兩者時。 – 2010-04-08 22:40:53

0

您應該創建一個新的控件實例,以便將其添加到畫布。例如,UIComponent上有許多屬性要求它位於一個位置 - parent屬性。如果你需要顯示類似的東西,你可以使用第三個對象來存儲你的狀態和數據綁定。

+0

昨天晚上我去了,做了一些我的代碼的大量重構,使我向我的樹中添加Object NOT UIComponent的子類的對象,然後將視圖屬性添加到我的對象,然後將其添加到畫布,我認爲會解決問題,但同樣的錯誤發生。我不知道爲什麼,但當我在對象中有一個uicomponent變量時,它看起來像這個錯誤與ByteArray :: writeObject()有關。我真的沒有時間查看所有flex的源代碼來調試它,但現在我只是禁用拖動,直到我可以更好地重新組織我的代碼。 – 2010-04-09 20:30:55