1

ゲームのスコアのリストを作成しています。今、私はリストのほとんどが同じItemRendererを持っている必要があります。ただし、プレイしているユーザーがリストされているリストの1つの特定の行には、異なる情報と異なる背景色が表示される必要があります。どうすればこれを達成できますか?

アップデート

私はすでに状態の問題を解決しようとしました。2つの状態を作成しました。1つは「mine」と呼ばれる状態で、もう1つは「others」と呼ばれる状態です。

私が得た問題は、ユーザーがリスト行の1つをクリックすると、状態がi donno ..クリックされたか何かに変わることです。そのため、状態は私にとって正しいアクションではないと思いました。

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 の対応する行に埋め込まれている場合、オーバーライドさ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 に答える