我可以让我的MXML组件成为单身人士吗?

时间:2009-12-16 15:30:01

标签: flex singleton mxml

我在网站上有一个MXML组件,我在几个不同的屏幕上重复使用。 根据用户点击的内容,组件会初始化一些值并开始播放媒体。

现在,如果我点击该网站,并在屏幕1中播放媒体,则该组件会初始化并播放该媒体。

如果我转到屏幕2并播放媒体,则组件初始化两次。一次用于屏幕1,一次用于屏幕2。

当我转到屏幕三时,它将开始初始化三次..所以它为每个屏幕创建一个新的MXML组件实例!!

如何确保MXML组件仅初始化我需要初始化的屏幕?

我真正想要的是这个组件在整个应用程序中始终只有一个实例。是否可以将MXML组件变为Singleton,以便我的应用程序中始终有一个MXML实例?

2 个答案:

答案 0 :(得分:2)

你能更深入地解释一下这个吗? “屏幕”是什么意思?听起来你的组件嵌套在某种视图堆栈中,并且你的屏幕是视图堆栈中的不同部分,但这里很难说。

无论如何,我认为解决方案是从视图中抽象出您想要成为单例的组件部分。默认情况下,Flex以惰性方式初始化视图堆栈中的对象,但可以使用ViewStack对象上的creationPolicy属性覆盖此属性。听起来你的creationPolicy在你访问它们时正在初始化它们,组件代码中的某些东西会导致同一个对象的其他实例在创建其他实例时重新激活一些初始化代码(可能在你的MXML单例实验中)。 / p>

要真正达到理想的效果,您应该只编写一些动作脚本,智能地重新显示您只想创建两次的显示对象。当我们在屏幕上讨论视图对象时,“单身人士”的想法并没有多大意义 - 要让它在很多地方展示,你需要很多实例,重新育儿的过程比单身模式,所以你需要围绕它做一些创造性的逻辑。

希望这会有所帮助 - 如果您想要更具体的回复,请随时发布更多源代码。

答案 1 :(得分:1)

为什么不将组件放入模块中并以这种方式使用它。您可以加载和/或卸载模块并在任何您喜欢的地方使用它!只是把它称为单个项目!而且你的应用程序的开销很少。