ゲームDreamweaverFlash自作ソフトチャット

2004年01月15日

CellRenderer

コンボボックスやリストなどで、リスト項目を入れ替える方法は以前からあったが、Flash MX 2004のコンポーネントの仕様が変わってちょっと面倒になった。

以前と異なるクラスを継承し、決められたインターフェイスを用意する必要がある。CellRenderer APIの仕様に対応し、mx.core.UIComponentクラスを継承して作成する。

最低限必要なのは、init,size,setValue関数で、initとsizeは継承元の関数を呼び出すだけでいい。重要なのが、setValue関数で、ここで描画内容を設定する。

こんな感じ。

#initclip

function TodoClass()
{
this.init();
}

TodoClass.prototype = new mx.core.UIComponent();

TodoClass.prototype.init = function()
{
super.init();
};

TodoClass.prototype.size = function()
{
super.size();
};

TodoClass.prototype.setValue = function( sub, item, selected )
{
if( item != undefined )
{
this.msg_txt.text = item.msg.substring( 0, 30 );
this.date_txt.text = item.myDate;
}
else
{
this.msg_txt.text = "";
this.date_txt.text = "";
this.gotoAndStop(1);
}
};

Object.registerClass( "todoHeader", TodoClass );

#endinitclip

わざわざクラスファイルを用意するのが面倒なので、フレームに直に書いている。
setValue関数の引数の順序は、ラベル文字列、オブジェクト、選択状態が渡され、この値から判断して表示を行う。

単純にオブジェクト内の特定のプロパティをラベルとして使いたい場合は、labelFieldを使うと簡単。これで表示するプロパティを設定できる。

Posted by Tomohiro at 2004年01月15日 15:52 | TrackBack
Comments
Post a comment








(SPAM対策のため、.biz,.comはエラーになります)
Remember personal info?