Tips: GUI関連


オブジェクトのサイズを取得できない(AIR β2/β3)

MXMLで記述した場合は問題ないが、ActionScript中に自分で作成したオブジェクトのサイズがうまく取得できない。

myApplication.mxml:
  <?xml version="1.0" encoding="utf-8"?>
  <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
      layout="absolute" applicationComplete="init()">
  <mx:Script source="myApplication.as"/>
  <mx:Button id="button2" label="hoge" x="10" y="10" />
  </mx:WindowedApplication>

myApplication.as:
  import mx.controls.*;
  private function init():void {
      var button1:Button = new Button();
      button1.x = 10;
      button1.y = 30;
      button1.label = "hogehoge";
      addChild(button1);
      trace("Button1:", button1.width, button1.height); // ActionScript
      trace("Button2:", button2.width, button2.height); // MXML
  }


実行結果:
  $ adl myApplication-app.xml
  Button1: 0 0
  Button2: 54 22

タイミングの問題かとも思い、いろいろ試すも解決に至らず...どなたか原因わかりますでしょうか?

【追記 2007.12.15】
AIR β3でも同様でした。

【追記 2008.01.24】
Jintenさんのblogにて本件が取り扱われてました(^_^;

やはりプロパティの更新のタイミングの問題で、callLater()メソッドを使うかcreationCompleteイベントのタイミングで値を読み出せば良いようです。イベント系はひと通り調べたつもりだったのですが、どうやら見落としてたようです。

Jintenさん、どうもありがとうございました。