2009-07-02 5 views
0

OK Ich habe eine Klasse namens WindowManager erstellt, so weit es nur als 1 Methode, um ein neues Fenster zu erstellen. Sie übergeben das DisplayObject an es, das in dem Fenster enthalten sein sollte. Das Problem ist, wenn ich ein neu erstelltes Anzeigeobjekt zu dem neuen Fenster hinzugefügt habe, wird es nicht angezeigt. Wenn ich jedoch zuerst als neues Anzeigeobjekt zum Hauptfenster komme, dann versuche es zu dem neuen Fenster hinzuzufügen, es klappt richtig.AIR: neues Fenster ... das Hinzufügen von Inhalt wird nicht angezeigt

hier ist diese Klasse:

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

    } 
} 

Wenn ich es so nennen:

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

Das neue Fenster enthält nothing..but Wenn ich das dispay Objekt in das Hauptfenster hinzufügen, bevor versuchen, es zu dem neuen Fenster hinzuzufügen, es funktioniert gut:

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

Kann mir jemand sagen, warum?

Danke.

Antwort

0

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

Inhalt zu einem Fenster hinzugefügt werden kann, um die Display Methoden des Stage-Objekts wie addChild() verwendet wird.

Sie können Flex-Komponenten nicht direkt zur Anzeigeliste einer NativeWindow-Instanz hinzufügen. Verwenden Sie stattdessen die Komponenten Flex mx: WindowedApplication und mx: Window, um Ihre Fenster zu erstellen und die anderen Flex-Komponenten als untergeordnete Elemente dieser Objekte hinzuzufügen. [...]

Vielleicht könnten Sie die Window-Klasse anstelle von NativeWindow versuchen?