2009-07-02 81 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?

相關問題