ActionScript:以编程方式将子项添加到 `mx:ViewStack`
ActionScript: programmatically adding children to a `mx:ViewStack`
我有一个 Flex mx:ViewStack
,它有一些 Flex 子项,但我想使用 ActionScript 添加更多子项。
var o:MyCanvas = new MyCanvas;
o.id = 'modRipley';
viewStack.addChild(o);
o = new MyCanvas;
o.id = 'modNewt';
viewStack.addChild(o);
o = new MyCanvas;
o.id = 'modGorman';
viewStack.addChild(o);
逐步完成,我没有看到 childDescriptors
成员(_childDescriptors
)有任何增加,并且:
viewStack.getChildByName('modNewt');
只是 returns 空。
我正在使用 Flex 3.5 SDK。
而不是分配 o.id = 'modNewt';
使用 o.name = 'modNewt';
并尝试使用 viewStack.getChildByName('modNewt');
访问子项。它应该有效。
正如我的评论所说,使用 addChild
是正确的,但您的其他代码没有用。 childDescriptors
是 Flex 框架用来构造 MXML children 的内容,因此它不会反映在 ActionScript 中所做的动态更改。 getChildByName
要求 child 具有 name
值,虽然您没有给他们一个 name
,但您给了他们一个 id
。
通常,如果我想动态添加视图 children,我会执行 MXML 编译器对 MXML children 所做的操作:创建将引用 children 的属性当我创建它们时。例如:
public class Example extends SomeMxmlComponentWithViewStack {
public var myCanvas1:MyCanvas;
public var myCanvas2:MyCanvas;
public var myCanvas3:MyCanvas;
override protected function createChildren():void {
super.createChildren(); // creates the MXML children
viewStack.addChild(myCanvas1 = new MyCanvas());
viewStack.addChild(myCanvas2 = new MyCanvas());
viewStack.addChild(myCanvas3 = new MyCanvas());
}
}
现在,您可以从任何代码中参考 myCanvas1
、myCanvas2
和 myCanvas3
。当您在 MXML 中声明一个组件并给它一个 id
.
时,这实际上就是 MXML 编译器为您做的事情
我有一个 Flex mx:ViewStack
,它有一些 Flex 子项,但我想使用 ActionScript 添加更多子项。
var o:MyCanvas = new MyCanvas;
o.id = 'modRipley';
viewStack.addChild(o);
o = new MyCanvas;
o.id = 'modNewt';
viewStack.addChild(o);
o = new MyCanvas;
o.id = 'modGorman';
viewStack.addChild(o);
逐步完成,我没有看到 childDescriptors
成员(_childDescriptors
)有任何增加,并且:
viewStack.getChildByName('modNewt');
只是 returns 空。
我正在使用 Flex 3.5 SDK。
而不是分配 o.id = 'modNewt';
使用 o.name = 'modNewt';
并尝试使用 viewStack.getChildByName('modNewt');
访问子项。它应该有效。
正如我的评论所说,使用 addChild
是正确的,但您的其他代码没有用。 childDescriptors
是 Flex 框架用来构造 MXML children 的内容,因此它不会反映在 ActionScript 中所做的动态更改。 getChildByName
要求 child 具有 name
值,虽然您没有给他们一个 name
,但您给了他们一个 id
。
通常,如果我想动态添加视图 children,我会执行 MXML 编译器对 MXML children 所做的操作:创建将引用 children 的属性当我创建它们时。例如:
public class Example extends SomeMxmlComponentWithViewStack {
public var myCanvas1:MyCanvas;
public var myCanvas2:MyCanvas;
public var myCanvas3:MyCanvas;
override protected function createChildren():void {
super.createChildren(); // creates the MXML children
viewStack.addChild(myCanvas1 = new MyCanvas());
viewStack.addChild(myCanvas2 = new MyCanvas());
viewStack.addChild(myCanvas3 = new MyCanvas());
}
}
现在,您可以从任何代码中参考 myCanvas1
、myCanvas2
和 myCanvas3
。当您在 MXML 中声明一个组件并给它一个 id
.