我的复合画布组件出现了一个奇怪的错误:
An ActionScript error has occurred:
Error: null
at mx.core::Container/initialize()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\core\Container.as:2560]
at -REMOVED THIS FOR STACK OVERFLOW-.view::EditableCanvas/initialize()[.../view/EditableCanvas
....
这似乎与我的复合组件有一个孩子的事实有关,我试图在我正在使用该组件的地方添加一个。那我怎么能正确地做到这一点呢?
组件代码如下所示(EditableCanvas.mxml):
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<mx:Image id="editTextImage"
source="@Embed('/../assets/icons/small/edit.png')"/>
</mx:Canvas>
使用代码的代码如下所示:
<view:EditableCanvas
width="290"
height="120"
backgroundColor="#FFFFFF"
horizontalScrollPolicy="off"
borderStyle="solid"
cornerRadius="3">
<mx:Text id="textContentBox" width="270" fontFamily="nautics" fontSize="12" text="{_text}"/>
</view:EditableCanvas>
答案 0 :(得分:1)
所以我自Adobe Flex 3 Help发现了解决方案:
如果在MXML组件文件中包含根容器标记的子标记,则在将该组件用作另一个MXML文件中的自定义标记时,无法添加子标记。如果在MXML文件中定义空容器,则可以在将该组件用作自定义标记时添加子标记。
在复合组件中拥有子元素(也接受来自自定义标记的子元素)的方法是在as3中的creationComplete之后添加它们。
答案 1 :(得分:0)
您是否尝试过不绑定到init()函数,而只是使用creationComplete =“init()”?