AIR:新窗口...向其添加内容不会显示

时间:2009-07-02 17:42:46

标签: flex air

好吧我创建了一个名为WindowManager的类,到目前为止它只是作为1方法,创建一个新窗口。您将DisplayObject传递给应包含在窗口中的DisplayObject。问题是如果我将新创建的显示对象添加到新窗口中它不会显示。但是,如果我首先作为主窗口的新显示对象,那么尝试将其添加到新窗口,它可以正常工作。

这是这堂课:

package
{
    import flash.display.DisplayObject;
    import flash.display.NativeWindow;
    import flash.display.NativeWindowInitOptions;
    import flash.display.NativeWindowSystemChrome;
    import flash.display.NativeWindowType;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.geom.Rectangle;
    import flash.display.Screen;

    public class WindowManager
    {
        public function WindowManager()
        {
        }

        public function newWindow(content:DisplayObject):void
        {
            var windowOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
            windowOptions.systemChrome = NativeWindowSystemChrome.NONE;
            windowOptions.type = NativeWindowType.NORMAL;
            windowOptions.transparent = true;

            var newWindow:NativeWindow = new NativeWindow(windowOptions);
            newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
            newWindow.stage.align = StageAlign.TOP_LEFT;
            newWindow.bounds = new Rectangle(0, 0, content.width, content.height);


            newWindow.title = "New Window Number 2";
            newWindow.alwaysInFront = true;

            newWindow.x = (Screen.mainScreen.bounds.width - newWindow.bounds.width)/2;
            newWindow.y = (Screen.mainScreen.bounds.height - newWindow.bounds.height)/2;


            newWindow.stage.addChild(content);

            newWindow.activate();
        }

    }
}

如果我这样称呼它:

var notifierBox:NotifierBox = new NotifierBox();
new WindowManager().newWindow(notifierBox);

新窗口将不包含任何内容..但是如果我在尝试将它添加到新窗口之前将dispay对象添加到主窗口它可以正常工作:

var notifierBox:NotifierBox = new NotifierBox();
addChild(notifierBox);
new WindowManager().newWindow(notifierBox);

有人可以告诉我为什么吗?

感谢。

1 个答案:

答案 0 :(得分:0)

http://livedocs.adobe.com/flex/3/langref/flash/display/NativeWindow.html说:

  

可以使用Stage对象的DisplayObjectContainer方法(如addChild())将内容添加到窗口中。

     

您不能将Flex组件直接添加到NativeWindow实例的显示列表中。相反,使用Flex mx:WindowedApplication和mx:Window组件来创建窗口并将其他Flex组件添加为这些对象的子组件。 [...]

也许您可以尝试使用Window类而不是NativeWindow?