Flex:如何重新使用现有的 TitleWindow 而不是打开另一个新的 TitleWindow?
Posted
技术标签:
【中文标题】Flex:如何重新使用现有的 TitleWindow 而不是打开另一个新的 TitleWindow?【英文标题】:Flex: how to re-use an existing TitleWindow rather than open another new TitleWindow? 【发布时间】:2012-06-17 14:24:31 【问题描述】:我的应用程序有一个书名列表,当用户单击特定书名时,会打开一个 TitleWindow,其中汇总了有关该书的详细信息。如果用户没有关闭 TitleWindow,而是选择了不同的书名,我希望已经打开的 TitleWindow 使用新选择的书名信息进行更新。因此,在任何时候都只会打开一个 TitleWindow,以便查看有关任何特定书名的更多信息。
我可以在网上找到的所有 spark TitleWindow 示例,每次使用 TitleWindow 时都会打开一个新的 TitleWindow。例如:
http://help.adobe.com/en_US/flex/using/WS6c678f7b363d5da52e8f1ca1124a0430dcf-8000.html
这也是我的情况。每次单击书名时,都会打开一个新的 TitleWindow。
如果一个已打开的 TitleWindow,有什么方法可以重新使用现有的 TitleWindow?当然,我们不是在谈论所有 TitleWindows,只是用于此目的的 TitleWindow 的专用实例。
目前我在 TitleWindow 中使用的变量是 [Bindable]
,因此当点击新书名时,原始 TitleWindow 会更新相关信息。因此,另一种解决方案是在现有 TitleWindow 已经打开时阻止新 TitleWindows 打开。因此,另一种解决方案是查询 TitleWindow 的一个实例是否已经打开,如果是,则不要打开新的。
【问题讨论】:
【参考方案1】:是的,这是可能的,只需在点击第一本书时创建一个标题窗口,然后在随后的点击中重复使用它。
private var _titleWindow:TitleWindow;
private function onBookClicked():void
if(!_titleWindow)
_titleWindow = PopUpManager.createPopUp(...) as TitleWindow;
updateTitleWindowWithBookInfo(_titleWindow,bookData);
当用户关闭标题窗口而不是删除它时,只需隐藏它。
【讨论】:
哇,这么简单,我试试。谢谢巴里斯。 那么在这种情况下,TitleWindow 永远不会真正被删除? 是的,如果你想删除它,你必须调用 PopUpManager.removePopUp(_titleWindow);如果他们关闭标题窗口,您可以调用它并将 _titleWindow 设置为 null。当一本书被点击时,titleWindow 将被重新创建,因为它为 null。 完美运行。非常感谢巴里斯!以上是关于Flex:如何重新使用现有的 TitleWindow 而不是打开另一个新的 TitleWindow?的主要内容,如果未能解决你的问题,请参考以下文章