ProgressionでFlexのコンポーネントを使う

前のエントリーでメモを書いたのだが、忘れないうちにTips化。

Progressionのtaka:niumさんに、twitterで教えてもらったのだが、CastObjectを委譲することで、Flexのコンポーネント(つまり、UIComponentのサブクラス)も、Castクラスとして扱えるそうだ。具体的な方法は、実はここにありました。

http://trac.progression.jp/browser/development/trunk/examples/flex_project/mxml/src/ProgressionMXML.mxml

これを参考に、実験を。上のサンプルで肝となるのは、この部分。
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を使えるのは便利。

Please follow and like us:

1 thought on “ProgressionでFlexのコンポーネントを使う

  1. ピンバック: blog.progression.jp» ブログアーカイブ » [お知らせ] 今週の Progression 関連エントリー(2008/11/22 〜 2008/11/28)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA