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さん、どうもありがとうございました。