2010-04-16 61 views
0

我从我的复合画布组件得到一个奇怪的错误:MXML复合容器初始化错误

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> 

回答

1

所以我发现全部由我自己的解决方案,从Adobe Flex 3 Help

如果您在MXML组件文件的根容器标签的子标签,你不能添加子标签,当您使用组件作为自定义标签在另一个MXML文件中。如果您在MXML文件中定义了空容器,则可以在将该组件用作自定义标签时添加子标签。

在复合组件(也接受来自自定义标记的孩子)中拥有子元素的方法是将它们添加到as3中的creationComplete之后。

0

,你试过没有约束力给init()函数,而只是有creationComplete =“init()”?