我目前正在开发一个扩展Canvas的自定义组件(我们称之为SuperCanvas);它基本上是一个容器,可以让你放大其内容。在“内部容器”中移动容器(在MXML中定义)的子项
这将是太多时间去解释为什么,但我不能使用scrollRect的,所以我被迫宣布一个Canvas对象(被称为innerCanvas)......我SuperCanvas内(我知道,不是很好= /)
我想知道是否有一种正确的方法来“重定向”在此画布中创建我的组件的子项。
让我解释一下:
<comp:SuperCanvas id="superCanvas">
<mx:Image id="img" source="image.jpg"/>
<mx:Label id="lbl" text="Sample"/>
</comp:SuperCanvas>
有了这个,IMG和LBL被添加到我的SuperCanvas。我想将它们添加到superCanvas.innerCanvas。
我不能覆盖添加/ removeChild之方法做了“重定向”,因为我将无法添加此innerCanvas ...
所以,我想这一点:
<comp:SuperCanvas>
<comp:innerCanvas>
<mx:Image id="img" source="image.jpg"/>
<mx:Label id="lbl" text="Sample"/>
</comp:innerCanvas>
</comp:SuperCanvas>
但Flex抱怨说:“在'contents'的初始值设定项中:输入mx.controls.Image不能分配给目标类型mx.containers.Canvas”。我读了我可以使用一组UIComponents与[ArrayElementType]元标签,并手动instanciate对象,但我正在寻找一个简单(可能是适当的)解决方案。
我也看到了childDescriptor属性(其中包含用于描述在MXML文件中定义的每一个孩子),但它是只读的,所以我不能把它传递给我的innerCanvas。
如果我不够清晰,不要犹豫,问我精度,英语不是我的母语,所以这是非常难以解释的事情做好=/
任何帮助将不胜感激,我完全卡住了。
编辑: 我SuperCanvas类(减去进口不要紧这里变焦&泛逻辑):
public class SuperCanvas extends Canvas
{
public innerCanvas:Canvas = new Canvas();
public function SuperCanvas()
{
super();
addChild(innerCanvas);
}
}
SuperCanvas,innerCanvas是什么类的定义? – Patrick 2010-01-27 20:30:15
我用定义编辑了我的问题。 – 2010-01-28 14:02:09