1

我正在为游戏创建一个分数列表。现在大部分列表我需要有相同的 ItemRenderer。但在列表的特定行中列出了正在播放的用户,它应该显示不同的信息和不同的背景颜色。我怎样才能做到这一点?

更新

我已经尝试解决状态问题,我创建了 2 个状态,一个状态称为“我的”,第二个状态称为“其他”。

我遇到的问题是,当用户单击状态更改为我不知道的列表行之一时。单击或其他内容,这就是为什么我认为状态对我来说不是正确的操作。

4

3 回答 3

9

Flex 4 附带的 spark List 控件允许您根据某些逻辑分配不同的 itemRenderer。

您可以通过设置itemRendererFunction属性来创建自定义项渲染器函数。

    <fx:Script>
    <![CDATA[
        import renderers.*;

        import mx.core.ClassFactory;
        import spark.skins.default.DefaultItemRenderer;

        private function list_itemRendererFunc(item:Object):ClassFactory {
            var cla:Class = DefaultItemRenderer;
            switch (item.type) {
                case "employee":
                    cla = EmployeeItemRenderer;
                    break;
                case "manager":
                    cla = ManagerItemRenderer;
                    break;
                default:
                    break;
            }
            return new ClassFactory(cla);
        }
    ]]>
</fx:Script>

<s:List id="list"
        labelField="name"
        itemRendererFunction="list_itemRendererFunc"
        horizontalCenter="0"
        verticalCenter="0">
于 2010-06-28T14:27:10.943 回答
0

如果dataProvider的对应行中嵌入了不同的数据,可以在override方法中检查数据,public set data并相应地设置itemRenderer的背景色。如果您需要该特定行中的更多控件,则可以使用状态。刚设置this.currentState = "currentUser";

override public function set data(item:Object):void
{
  if(item.user == SomeGlobal.currentUser)//or outerDocument.currentUser
  {
    this.currentState = "currentUser";
  }
  else
  {
    //reset to default state, coz item renderers are reused
    this.currentState = "";
  } 
}

如果您不熟悉状态,有很多关于在Flex中使用状态的示例

于 2010-06-28T12:08:34.433 回答
0

您可以构建一个组件作为 itemrenderer,并让它根据使用状态的行中的数据提供不同的视图 - 在创建时切换到适当的状态。

于 2010-06-28T12:08:40.823 回答