【问题标题】:Flex: how to re-use an existing TitleWindow rather than open another new TitleWindow?Flex:如何重新使用现有的 TitleWindow 而不是打开另一个新的 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 的一个实例是否已经打开,如果是,则不要打开新的。

【问题讨论】:

    标签: actionscript-3 apache-flex


    【解决方案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。
    • 完美运行。非常感谢巴里斯!
    猜你喜欢
    • 1970-01-01
    • 2013-02-21
    • 2011-08-03
    • 2011-02-18
    • 2011-10-08
    • 2011-11-14
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    相关资源
    最近更新 更多