在 Flex 3 中将 UIComponent 添加到 Canvas 和 Tree

Posted

技术标签:

【中文标题】在 Flex 3 中将 UIComponent 添加到 Canvas 和 Tree【英文标题】:Adding UIComponent to both Canvas and Tree in Flex 3 【发布时间】:2011-02-05 22:09:43 【问题描述】:

我目前正在尝试添加一个自定义类,该类将 UIComponent 子类化到树和画布,但是当我尝试通过拖动重新排序树时,我收到此错误:

TypeError:错误 #1010:术语未定义且没有属性。 在 mx.controls::Tree/get firstVisibleItem()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\controls\Tree.as:764] 在 flash.utils::ByteArray/writeObject() 在 flash.desktop::Clipboard/putSerialization() 在 flash.desktop::Clipboard/convertFlashFormat() 在 flash.desktop::Clipboard/setData() 在 mx.managers::NativeDragManagerImpl/doDrag()[C:\autobuild\3.2.0\frameworks\projects\airframework\src\mx\managers\NativeDragManagerImpl.as:282] 在 mx.managers::DragManager$/doDrag()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\managers\DragManager.as:243] 在 mx.controls.listClasses::ListBase/dragStartHandler()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:9085] 在 flash.events::EventDispatcher/dispatchEventFunction() 在 flash.events::EventDispatcher/dispatchEvent() 在 mx.core::UIComponent/dispatchEvent()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:9298] 在 mx.controls.listClasses::ListBase/mouseMoveHandler()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:8822]

当我不将 UIComponent 添加到画布时,不会发生此错误,有人知道为什么会发生这种情况吗?

【问题讨论】:

你是想添加你的类的同一个实例,还是不同的实例? 【参考方案1】:

您应该创建一个新的控件实例,以便将其添加到画布中。 UIComponent 上有许多属性要求它位于一个位置——例如,parent 属性。如果你需要两者都显示类似的东西,你可以使用第三个对象来存储你的状态和数据绑定到它。

【讨论】:

昨晚我去对我的代码进行了一些广泛的重构,以使我添加到树中的对象成为 Object NOT UIComponent 的子类,然后向我的对象添加了一个视图属性,然后添加到画布上,我认为这可以解决问题,但会发生同样的错误。我不知道为什么,但是当我的对象中有一个 uicomponent 变量时,错误似乎与 ByteArray::writeObject() 有关。我真的没有时间查看所有 flex 的源代码来调试它,但现在我只是禁用了拖动,直到我可以更好地重新组织我的代码。【参考方案2】:

您收到此错误的原因是树或画布无法访问您的自定义组件属性或方法。尽管您的组件确实进入了显示对象,但它仍然需要知道如何访问它。

【讨论】:

似乎并非如此,将我的自定义 UIComponent 添加到画布或树中可以,但同时添加到两者时不会。

以上是关于在 Flex 3 中将 UIComponent 添加到 Canvas 和 Tree的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flex 中向 UIComponent 添加滚动条

Flex:将未实现的 UIComponent 渲染到 BitmapData?

在 ActionScript 3.5/Flex 中,如何将边框应用于用户单击的任何 UI 组件或容器?

如何在flex 3中将动态值作为数组集合的字段名称传递

Flex自定义组件骨架

Flex ProgressBar 组件问题