【问题标题】:Flex: DisplayObject SingletonFlex:显示对象单例
【发布时间】:2010-11-18 08:10:25
【问题描述】:

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

但问题是:

当我做这样的事情时: var vb1: VBox = 新 VBox(); var vb2: VBox = new VBox();

var comp : MyComponent  = new MyComponent.getInstance();  

vb1.addChild(comp); 
vb2.addChild(comp); 

组件仅在 "vb2" 中显示。我想当我们调用 vb2.addChild(comp) 时, 它删除了 vb1 中的孩子。

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

【问题讨论】:

    标签: apache-flex singleton displayobject


    【解决方案1】:

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

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

    例如:

    vb1.addChild(new MyComponent(MyData.getInstance()));
    vb2.addChild(new MyComponent(MyData.getInstance()));
    

    【讨论】:

    • 当我不得不在不同的屏幕上使用 Flash 组件时,这实际上发生在我身上。 flash 组件不是我制作的,它的构建方式使得它的多个实例会导致奇怪的行为(我将其归咎于单例)。除此之外,我看不到其他可以从该解决方案中受益的场景。如果它是“内部”组件,只需将其实例绑定到同一模型即可。
    • 对不起,我不太明白。您的示例中的 MyData 是什么?对我来说,我需要让 MyComponent 在“vb1”和“vb2”中成为同一个实例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多