Flex应用程序中的双监视器支持

时间:2012-08-09 09:10:50

标签: windows flex air

我正在使用adobe flex和Air构建一个Windows应用程序。

它将支持两个显示,一个用于选择要播放的视频,另一个用于播放qued / selected视频。

我在adobe网站上看到,Air支持多个显示器,但它没有深入探讨。

这是我第一次这样做,所以有人可以请: a)如果有可能请告诉我 b)给我一个如何实现它的概述

谢谢

1 个答案:

答案 0 :(得分:2)

我试着描述一个简单的例子。

假设您的视频列表是主应用程序窗口(这是您一直想看的窗口),播放器窗口是可选的,具体取决于用户是否选择了视频。

首先创建播放器窗口:

<!-- PlayerWindow.mxml -->
<s:Window xmlns:fx="http://ns.adobe.com/mxml/2009" 
          xmlns:s="library://ns.adobe.com/flex/spark" 
          width="400" height="300">

    <fx:Declarations>
        <fx:String id="video" />
    </fx:Declarations>

    <s:Label text="Now playing: {video}" />

</s:Window>

正如你所看到的,那里没有视频播放器:我只是想让这个例子变得尽可能简单。
现在,从主应用程序开始,当用户从列表中选择视频时,我们将打开该窗口并设置video属性:

<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark">

    <fx:Script>
        <![CDATA[               
            private var playerWindow:PlayerWindow;

            private function openPlayerWindow():void {
                //only open a new window if it isn't already there,
                //otherwise just set the 'video' property
                if (!playerWindow) {
                    playerWindow = new PlayerWindow();
                    playerWindow.addEventListener(Event.CLOSE, onClose);
                    playerWindow.open();
                }
                playerWindow.video = movieList.selectedItem;
            }

            private function onClose(event:Event):void {
                //remove the reference to the window when the user closes it,
                //so we can reopen it later
                playerWindow.removeEventListener(Event.CLOSE, onClose);
                playerWindow = null;
            }
        ]]>
    </fx:Script>

    <s:List id="movieList" change="openPlayerWindow()">
        <s:dataProvider>
            <s:ArrayList>
                <fx:String>Batman</fx:String>
                <fx:String>Superman</fx:String>
                <fx:String>Spiderman</fx:String>
            </s:ArrayList>
        </s:dataProvider>
    </s:List>

video属性只是一个简单的字符串。它可以用复杂的模型对象替换。如果然后从主窗口更改该模型对象的属性,则可以通过数据绑定将这些更改简单地反映在播放器窗口中。