UDN
Search public documentation:
CLIKMultiColListCH
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(列表项渲染)只支持单个文本域。 但很多情况下需要一个列表项显示多个文本域,或者甚至需要显示类似于图标这样的非文本域资源。 该例说明了怎样将两个文本域添加到一个列表项的方法。
ActionScript
首先,让我们定义一下要求。 我们的目标是新建一个支持两个文本域的自定义ListItemRenderer(列表项渲染线程)。 该自定义ListItemRenderer(列表项渲染线程)应该同ScrollingList(滚动列表)兼容。 既然打算每个列表项中有两个文本域,那么数据应该不只是一个单个字符串列表。 针对这个例子,让我们使用以下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’的两个文本域。 下一步就必须在库中将该标识符和类改成MyItemRenderer。
- 右击库中的ListItemRenderer(列表项渲染线程)并选择属性。
- 将名字改成: MyItemRenderer
- 将标识符改成: MyItemRenderer
- 将类改成: gfx.controls.MyItemRenderer
- 点击OK。
- 再次右击ListItemRenderer(列表项渲染线程)并选择Component Definition(组件定义)
- 将类改成: gfx.controls.MyItemRenderer
- 将这个标记复制到包含您列表的Flash库中。
使用新的多列列表
要想将MyItemRenderer 组件和您的列表结合使用,MyItemRenderer(我的项渲染线程)的复件必须在库中存在。 将您列表实例的itemRenderer(项的渲染线程)可见属性改成‘MyItemRenderer’。 (通过组件查看器窗口(CS4)或展开组件参数(CS5),两种方法均可) 现在运行FLA。 列表包含显示两个标签的列表元素,它应该可见。 fname和Iname属性在dataProvider(数据供给器)中设置。