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