我希望在整个应用程序中的几个不同位置显示Flex组件。它应该是组件的相同实例,而不是副本。 所以我想把Component作为Singleton。
但问题是:
当我做这样的事情时: var vb1:VBox = new VBox(); var vb2:VBox = new VBox();
var comp : MyComponent = new MyComponent.getInstance();
vb1.addChild(comp);
vb2.addChild(comp);
组件仅显示在“vb2”中。我想当我们调用vb2.addChild(comp)时, 它删除了vb1中的孩子。
有没有人知道如何解决这个问题?
答案 0 :(得分:2)
如果您希望组件显示在多个位置,那么它必须是副本,因为它是显示的组件本身。为什么你需要组件成为Singleton?是否只需要来自同一个地方的基础数据?在这种情况下,您只需将显示组件引用到同一条数据即可。
如果您确实需要在多个地方使用相同的组件,则无论何时显示它都必须移动它。
例如:
vb1.addChild(new MyComponent(MyData.getInstance()));
vb2.addChild(new MyComponent(MyData.getInstance()));