Невозможно изменить размер содержимого, чтобы оно соответствовало новому NativeWindow в AIR

Я пытаюсь создать класс всплывающего окна, который будет получать содержимое DisaplyObject, а также всплывать и отображать его сам по себе, но я ломаю голову, сопоставляя размер содержимого с окном, или наоборот... Я думаю, что, может быть, окно не отображает все сцены или что-то?!

Содержание становится слишком большим.. и выходит за пределы.

вот код:

public class SubWindow extends NativeWindow{

 public function SubWindow() 
  {

   var windowOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
     windowOptions.systemChrome = NativeWindowSystemChrome.STANDARD;
     windowOptions.type = NativeWindowType.UTILITY;
   windowOptions.resizable = false;
   super(windowOptions);
   this.stage.align = StageAlign.TOP_LEFT;
     width = 400;
     height = 400;
     title = "Are you sure?";
   alwaysInFront = true;
   activate();
   visible = false;
   addEventListener(Event.CLOSING, closeWindow, false, 0, true); 
  }

  public function closeWindow(e:Event)
  {
   e.stopImmediatePropagation();
         e.stopPropagation();
         e.preventDefault();
   visible = false;
  }

  public function setContent(cont:DisplayObject)
  {
   visible = true;
   //this.width = stage.stageWidth;
   //this.height = stage.stageHeight;
   trace(cont.getBounds(stage), width, height, stage.stageWidth,stage.stageHeight);


   cont.height = stage.stageHeight;
   cont.width = stage.stageWidth;
   cont.x = cont.y = 0;
   this.stage.addChild(cont);
   trace(cont.width, width, height, stage.stageWidth,stage.stageHeight);
  }
 }

Спасибо мик

2 ответа

Теперь я решил это, я думаю!

Сначала создайте свой контент:

var myContent:MyCustomContentClass = new MyCustomContentClass();

Затем создайте свое окно и установите размер и положение

var myWindow:NativeWindow = new NativeWindow();
myWindow.stage.align = StageAlign.TOP_LEFT;
myWindow.width = myContent.width;
myWindow.height = myContent.height

И установите режим масштабирования без масштаба:

myWindow.stage.scaleMode = StageScaleMode.NO_SCALE;

А затем добавить контент

myWindow.stage.addChild(myContent); 
myWindow.activate();

У меня все еще есть некоторые незначительные проблемы при работе на OSX, но я думаю, что это связано с размером системного Chrome.

Возможно, из-за того, что размеры родных окон Chrome отличаются. Попробуйте так:

http://tedpatrick.com/2009/12/23/sizing-air-nativewindow-to-stage/

Другие вопросы по тегам