2009-07-02 83 views
0

确定我创建了一个名为WindowManager的类,到目前为止它只是一种方法,用于创建一个新窗口。您将DisplayObject传递给应该包含在窗口中的DisplayObject。问题是如果我添加一个新创建的显示对象到新窗口,它不会显示。但是,如果我首先将其作为主窗口的新显示对象,然后尝试将其添加到新窗口中,它的工作原理是正确的。AIR:新窗口...将内容添加到它不显示

这里是这个类:

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); 

新窗口将包含nothing..but如果我之前dispay对象添加到主窗口试图将它添加到新窗口它工作正常:

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

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

谢谢。

回答

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?