0

我想在整个应用程序的几个不同位置显示一个 Flex 组件。它应该是组件的同一个实例,而不是副本。所以我想把组件做成一个单例。

但问题是:

当我做这样的事情时: 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 中的孩子。

有谁知道如何解决这个问题?

4

1 回答 1

2

如果您希望组件在多个位置显示,那么它必须是副本,因为显示的是组件本身。为什么需要组件是单例?仅仅是底层数据需要来自同一个地方吗?在这种情况下,您可以只将显示组件引用到同一条数据。

如果您确实需要在多个地方使用相同的组件,则必须在显示时移动它。

例如:

vb1.addChild(new MyComponent(MyData.getInstance()));
vb2.addChild(new MyComponent(MyData.getInstance()));
于 2009-08-10T15:32:00.353 回答