2013/10/30

Flex:: ItemRendererのview statesについて

Flex:: かなり単純なことにハマってしまったので、同じようなことで悩んでいる人のためにと思いメモ。

モバイルアプリ用にSpark Listコンポーネントを使い、そのItemRendererをカスタムで作成していました。
モバイル用なので、ItemRendererといっても「hovered」や「dragging」などはなく、また、この場合「selected」も必要ありませんでした。
「states」は2つ設定しており、1つはデフォルトの状態で、もう1つは特別なItemのみ使用するものでした。

特に意味もなくデフォルトのview stateの名前に「normal」と設定していました。これが原因だったんですが。。。

今思えば単純ですが、この「normal」という名前のせいで、「selected」はview statesに宣言していないにもかかわらず、リストのItemをクリックした際に、view statesの状態が「selected」に替わってしまいました。selectedの処理を入れていなので、特に関係ないと思うかもしれませんが、もう1つのview statesに設定してあったItemも「selected」の状態になり、設定が変更されてしまいました。このItemの状態は勝手に変更されると困るんです。。。

「selected」は宣言していなかったので、なんでだろうとかなり悩んでいました。「normal」という名前を「default」に変更したところ、この現象は起きなくなりました。

ここから、「normal」という名前はプリセットされた名前なので、これを使用すると自動的に「slected」なども宣言していなくても、使用されるようです。。。

特に意味もないなら「normal」という名前は使わないようにしましょう。

ちなみに予約されている名前は以下のものです。

  • normal
  • hovered
  • selected
  • dragging
  • normalAndShowCaret
  • hoveredAndShowCaret
  • selectedAndShowCaret

0 件のコメント:

コメントを投稿