前のエントリーでメモを書いたのだが、忘れないうちにTips化。
Progressionのtaka:niumさんに、twitterで教えてもらったのだが、CastObjectを委譲することで、Flexのコンポーネント(つまり、UIComponentのサブクラス)も、Castクラスとして扱えるそうだ。具体的な方法は、実はここにありました。
これを参考に、実験を。上のサンプルで肝となるのは、この部分。
var com:Panel = new Panel();
com.width = 200;
com.height = 200;
com.alpha = 0;
var cast:CastObject = new CastObject( com );
CastObjectのインスタンスを生成するときに、Cast化したいコンポーネントのインスタンスを渡してあげる。
Cast化したインスタンスのプロパティを変えたいときは、CastObject型のインスタンスのプロパティを変えず、元のインスタンスのプロパティを変えるところも重要。
ここで気になるのが、addChildを実行されるインスタンスは、どこに配置されているか、ということになるのだが、Application.applicationと、いわゆるroot(SystemManger直下)に配置されることになるようだ。では、各シーンにおいては、どのように配置するかと言うとこ、こんな感じ。
protected override function _onLoad():void {
var button:Button = new Button();
_button = new CastObject( button );
button.label = “OK”;
button.setActualSize( 100, 32 );
var app:Application = Application( Application.application );
addCommand(
new AddChild( app, _button ),
);
}
と、まで書いたが、Application.application以下のコンポーネントにaddChildする場合も考えられるので、それもまた検証すべきかも。
MXMLベースWebを制作する際に、Progressionを使えるのは便利。
ピンバック: blog.progression.jp» ブログアーカイブ » [お知らせ] 今週の Progression 関連エントリー(2008/11/22 〜 2008/11/28)