UDN
Search public documentation:
CLIKMultiColListJP
English Translation
中国翻译
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
中国翻译
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
マルチカラム リストを作成する方法
概要
ScrollingList コンポーネントは、デフォルトで ListItemRenderer を使用して行コンテンツを表示します。ただし、ListItemRenderer は、単一の textField しかサポートしていません。リストアイテムが2 個以上の textField を表示しなければならない場合や、さらには非 textField リソース (例 : アイコン) を表示しなければならない場合が多数あります。この例では、2 個の textField をリストアイテムに追加する方法について説明します。
ActionScript
まず、要件を明確化します。目的は、2 個の textFiled をサポートするカスタムの ListItemRenderer を作成することです。このカスタムの ListItemRenderer は、ScrollingList と互換性があることも必要です。また、リストアイテム 1 個につき 2 個の textField を作るという計画であるため、データは、単一の文字列のリストよりも多くする必要があります。この例のために、次の dataProvider を使用することにします。
list.dataProvider = [{fname: "Michael", lname: "Jordan"}, {fname: "Roger", lname: "Federer"}, {fname: "Michael", lname: "Schumacher"}, {fname: "Tiger", lname: "Woods"}, {fname: "Babe", lname: "Ruth"}, {fname: "Wayne", lname: "Gretzky"}, {fname: "Usain", lname: "Bolt"}];
import gfx.controls.ListItemRenderer; class gfx.controls.MyItemRenderer extends ListItemRenderer { public var textField1:TextField; public var textField2:TextField; public function MyItemRenderer() { super(); } public function setData(data:Object):Void { this.data = data; textField1.text = data ? data.fname : ""; textField2.text = data ? data.lname : ""; } private function updateAfterStateChange():Void { textField1.text = data ? data.fname : ""; textField2.text = data ? data.lname : ""; } }
Flash の変更
ここまでで、複雑なリストアイテムをもつ dataProvider、および、それらのリストアイテムのレンダリングをサポートする ListItemRenderer クラスが定義されました。あらゆるものをリストコンポーネントにフックアップさせるためには、シンボルを作成することによって、この新たな ListItemRenderer クラスをサポートするようにする必要があります。この例において、これを最も速く実現するには、プレビルドされている ListItemRenderer シンボル (C:\UDK\UDK-2010-12\Development\Flash\CLIK\components\ListItemRende rer.fla) を変更して、textField1 と textField2 というインスタンス名をもつ 2 つの textField をもつようにします。次に、このシンボルの識別子とクラスをライブラリにおいて MyItemRenderer に変更する必要があります。
- ライブラリで ListItemRenderer を右クリックして、プロパティを選択します。
- Name を MyItemRenderer に変更します。
- Identifier (識別子) を MyItemRenderer に変更します。
- Class を gfx.controls.MyItemRendere に変更します。
- [OK] をクリックします。
- ListItemRenderer を再度右クリックして、Component Definition (コンポーネントの定義) を選択します。
- Class を gfx.controls.MyItemRendere に変更します。
- リストを含んでいる Flash ファイルのライブラリにシンボルをコピーします。
新たなマルチコラムリストを使用する
リストとともに MyItemRenderer コンポーネントを使用するには、当然のことながらライブラリにそのコピーが存在している必要があります。リストのインスタンスがもつインスペクタブル (inspectable) なプロパティである itemRenderer を、MyItemRenderer に変更します。( [Component Inspector] ウィンドウ (CS4) または [Component Parameters] ロールアウト (CS5) のいずれかから)。 FLA を実行します。リストが表示されます。これには、2 つのラベルを表示するリスト要素が含まれています。(dataProvider でセットされた fname と lname プロパティ)。