Air/Flexの最近のブログ記事
画像一覧で、表示形式をリストとサムネイルの一覧で切り替えられるという仕様があったので、ViewStackを使ってみることにしました。
ViewStackの上にDataGridとListを配置して、切り替えボタンのクリックイベントハンドラで、ViewStackのselectedItemIndexプロパティを変更してやると(実際にはデータバインディングを使用していますが)、あっという間にリスト切り替えの実装が完了してしまいました。
あー、楽ちん。
と、ここまでは良かったのですが、画像一覧のクリックイベントを処理するために、DataGridとListの両方にクリックイベントハンドラを追加したところ、addEventListnerでNullPointerExceptionが発生してしまいました。
まさかとは思ったのですが、どうやらViewStack上に配置された初期状態で不可視状態のコンポーネントのインスタンスは、初めて表示されるタイミングで生成される仕様みたいです。
「こんなんだったらViewStackなんか使わないで自前で処理した方が早いわボケー」
と思いつつ調べてみたところ、ViewStackのcreationPolicyというプロパティをallに設定することにより、ViewStackの初期化の際に、ViewStack上に配置されたすべてのコンポーネントのインスタンスが生成されるようになり、万事解決めでたしめでたしと相成りました。
ということで無事に一件落着したわけですが、この広い野原いっぱいインターネットの世界の中で、検索の末にこの解決策を発見したのが、同じアイレットの中のH君のCTOA日記内のエントリーだったというこのなんという偶然!
なんて言ってみましたが、実際は偶然でもなんでもなく、AirやFlex関連で困った時にいろいろ検索していると、高い確率でCTOA日記に行き当たるので、即ちCTOA日記には、有益な情報がいっぱい詰まっているということです。
そんなわけで、こんなブログより7倍(当社比)ためになるCTOA日記もよろしく。
6月6日はドラえもんの日だと個人的に思っています。
AirやFlexで扱うことができるエンコーディングは、デフォルトではUTF-8ですが、サーバ側のシステムの都合などで、UTF-8以外のエンコーディングを扱う必要が出てくる場合があります。
サーバ側から返されるデータのエンコーディングがShift-JISで固定であれば、サーバからデータを取得する前に、以下の一行を追加するだけで、Shift-JISのデータを文字化けすることなく扱うことができます。
洗濯物のポケットにレシートが入っているのに気づかずに洗ってしまったとです。
ヒロシです。(あえて)
URLLoaderで取得したデータに数値文字参照が含まれていました。
表示するだけなら、LabelやTextAreaのhtmlTextプロパティにセットしてやればOKなのですが、htmlTextプロパティの無いコンポーネントへの表示や、データの編集・保存などのために直接文字に変換したいという場合のための手段としては使えませんし、Flexにもそういうメソッドは用意されていないようです。(見つけられてないだけかも?)
ということで、Unicode・16進数表記の数値文字参照限定ですが、自前の変換処理を作成して対応しました。

