カテゴリー : Flex
このカテゴリーの登録数:4件 表示 : 1 - 4 / 4
Aug 29, 2009
Aug 17, 2009
なぞのリソースバンドルを調べてみましたよ
前のエントリで書いた、なぞの "core" リソースバンドルのせいで「null」っていう描画がなされる件。
というかこの問題は、
- UITextField のメソッドのバグ
- 後から新たなロケールを追加するだけでメインアプリをリコンパイルしなければならなくなる
という2つの合わせ技になっていたわけで、前者はもうどうしょうもないわけですが(苦笑)、後者についてはどうなんだと。なんとか回避する技はないのかと。
と考えたくなるわけで、それを検証してみましたよ、このコードで。
var resourceManager:IResourceManager = ResourceManager.getInstance();
var bundleNames:Array/* of String */ =
resourceManager.getBundleNamesForLocale("ja_JP");
var length:int = bundleNames.length;
for (var i:int = 0; i < length; ++i) {
trace("bundle [" + bundleNames[i] + "]");
var bundle:IResourceBundle =
resourceManager.getResourceBundle("ja_JP", bundleNames[i]);
for (var key:String in bundle.content) {
trace(" " + key + " -> " + bundle.content[key]);
}
}
んでその結果は。
Aug 14, 2009
Flexのi18n/L10Nでやられました。涙
またまたご無沙汰しております。
先週はまるまる、京都&青森ねぶた→北東北とめぐる夏休みを堪能してきまして、打って変わって今週は仕事に労組活動にとかなりしんどい日々を送っております。
んで、その仕事ですよ。Flex。
日本語で普通につくってるアプリを、なぜか中文対応させなくちゃならなくなりました。
っとこれはi18n/L10Nの出番だ。というわけでヘルプ読んで、さらにはてなダイアリーに点在する経験者体験談(これとか)を読んで、さらにリソースモジュールを.swfで分離したくてあーでもないこーでもないと試してみて、メインアプリのコンパイルオプションを -locale= と空文字列にしてコンパイルして、PHP側でロケール切り分けてFlashVarsに渡すようにして、うぉぉぉぉぉぉ!動いた!!!(^◇^) ちゃんと日本語中文がリソースモジュールの切り分けで表示し分けられてる♪(*^ ・^)ノ⌒☆ …というのは糠喜びでした。涙
なんぢゃこの「null」って!!!
このTabNavigatorのTabBarの各ラベルも、もちろんリソースモジュールから読み分けているんですが、日本語中文そのものの文字はちゃんと出てますが、nullって…
とりあえず、たぶん先人の言うとおり -locale=ja_JP -locale=zh_CN って入れれば動くのかなぁ、とやってみまして、その上でもちろんリソースモジュールはロードしたところ、
というわけで見事に解決しまして、とりあえずはほっ。
しかし。
これでは、せっかくリソースモジュールを分離して、「新たなロケール対応の際はリソースモジュールのみ追加すれば本体はそのまま使える」となる、との目論見は完全崩壊です。
あまりに納得がいかず、「またこれは毛唐(差別用語)の仕業か」と思いつつもライブラリのソースコードを眺めたのですが…
すみません、「毛唐(差別用語)」による多バイト文字無理解が原因ではなく、それ以前の、ライブラリのバグでしたよこれ。
まさにTabBarつーか、Buttonつーか、とにかくコントロール内のラベルが幅からあふれてる際に表示テキストの切り捨てを計算してる、UITextField の中の、
core/UITextField.as より引用
if (!truncationIndicatorResource)
{
truncationIndicatorResource = resourceManager.getString(
"core", "truncationIndicator");
}
public function truncateToFit(truncationIndicator:String = null):Boolean
{
if (!truncationIndicator)
truncationIndicator = truncationIndicatorResource;
…ってぉぃ!! これじゃ、"core" バンドルの "truncationIndicator" が取得できないと、null.toString() 、つまり「null」という文字列が付加されるやんけ!!!( ̄□ ̄;)!!
そもそもこの "core"バンドルが undocumented なこと自体がおかしいとも思いますが、無指定の場合に "null" という文字列が表示されてしまうのはいくらなんでもバグと言わずしてなんと言うべきなのか。
でも、まぁ、Flexですからね。しょーがないか。笑
Jun 18, 2009
カスタムレンダラー上のダブルクリックが拾えない現象
あまりにごぶさたしています。
ここのところ諸処あまりに忙しく、それに輪をかけてAdobe Flexと格闘することとなりにっちもさっちも行ってませんでしたが、ようやく慣れてきて、いちゃもんをつぶやいてもギリギリ許される技術レベルになってきたかな、というところで、カテゴリ作って愚痴こぼしから更新を再開します。(^^;;)
Flex のリストコントロール系(DataGrid等)でマウスダブルクリックを拾うには、イベントリスナを登録するだけでなく doubleClickEnabled プロパティを true にしなければなりません、というのは有名な話で、実際そう設定すれば ITEM_DOUBLE_CLICK イベントが拾えるようになります。
だがしかし、これは、コンテナを拡張して作ったカスタムレンダラを使ったアイテム上では成り立ちません。
「なんだ、コンテナの doubleClickEnabled も true にしておけばよいのか」とお思いのアナタ。私もそう思いましたよ。
でもそうやってみても結局動かないんだなこれが。
いろいろ試行錯誤したのですが、偶然に見つけた正解は、あっと驚く「空のイベントリスナを DOUBLE_CLICK に加える」だったという…
本当に偶然発見したのですが、この偶然にたどり着けなかったら途方に暮れてるところでしたよ…涙

もうホントに労組活動で疲弊している今日このごろです…執行委員辞めたのに収入源に直結する昼間任務がまったく減らない。夏休みとったのもありますが、今月は10万円減となってしまいました。そして5連休のある来月も似たような感じになりそうで、資金不足により冬はあんまり旅行できそうにありません。
でもこれは単純に、現下で抱える争議がたまたま日程的にバッティングの嵐になっている影響もありまして。
一番ムカついてるのが、いきなり第1回めの団交の冒頭で実質拒否をされて、抗議したら雇用側から労働審判に訴えてきたっていうやつ。先方の弁護士はヤメ検で、かの大手悪徳金融業T社で社外取締役をやっていたという輩。要するに、中小企業での労使問題の解決のノウハウなどまったくなく、「そんなの労働審判に持ち込んだらあんたらむしろ簡単に負けますよ」っていう話をわざわざお金かけて訴えてきて、んで実際に第1回審判で雇用側敗北がほぼ必須になっちゃってるわけです。しかしとはいえ、労働審判なのでこちらも弁護士を立てねばならなくなる上に、こちらが勝訴しただけではそれが持ち出しに終わるっていうまったく腹立たしい話なんですよね。労組も解雇された本人も金銭的に困るし、担当の私も昼間の時間を吸い取られてやっぱり金銭的に困るっていう。いわゆるSLAPPとは規模はまるで違いますが(^^;;)、でも構造としてはこれ、単に労働者への嫌がらせっていうだけです罠。
さて、しかし、確かに収入源は、こゆ身では精神的には深刻ではあるのですが、でもたぶんそれをより増幅して感じてしまうのは、むしろ労組活動ではなくて仕事のせいじゃないか、という話だったりもします。
つい先日まではFlexだなんだと格闘してて、で実際にFlexについてはかなりモノにできてきた感じなのですが、しかし先々週に突如申し渡された「よねざわさん、Silverlightの手伝いをしてください」との声。
んな、Flexの対抗馬とはいえ、それM$でしょ?C#でしょ?とビビりながらも、当該任務に困っているSさん(このぶろぐで久々に登場!)からアドバイスを受けながら、1日で最低限マスターして逆にコード書きの手伝いをはじめたりして、おお、Silverlight面白いけど「なんでもコード書いて解決すりゃええやん」という私にはFlexの方がなじむなぁ、なんてぶつぶつ言いつつバリバリSilverlightでお仕事。
しかしそれが収束に向かい始め、先週頭に仕事ないですよー、と訴えたら、今度は別の部署から「よねざわさん、SQL Serverの手伝いをしてください」との声。
えーっまたM$かよ!と思いつつ、Windows Serverはセットアップしてくださるってことなんで、今度はC#かはたまた懐かしのVBか(笑)、と思ってたら、「SSIS使ってください」。
な、な、なんじゃこの電子ブロックは!?!?と、M$な世界がよくわかってない私は率直に思うわけですが、結局これで複数のExcelシートからデータインポートするパッケージを作ることになったわけです。
列行変換があるのでそこはC#で書いて、でようやく昨日できあがったんですけど、できてしまえば意外にシンプル、でもSSIS以前にSQL ServerもADOもなーんも分かってない私にとって、むしろそれらのスキルが不足つーかほとんどない状態から作るのは相当の苦行でした。
で、それは昨日できあがったわけですけども、実は今週頭からはさらに別の任務が並行化。「よねざわさん、インストール不要なWin32アプリを作ってください」とのお声がまたまたかかり、イマドキなんでやねん、と思いつつも、それならと利用を提案してめでたく通りまして、実に久々にWTLですよ!!!
Silverlight開発のためにVS2008はインストールしていただいてたので、そこにWTL8.1を入れて、さっそくモック作って「早いですね!」ってほめられましたが、これは明らかにWTLがほめられただけですね。笑
それにしてもWTL、8.1になってたんですね! しかも日本語パック出てて、Wizardから出力されるリソースがデフォルトでCP932だし!!!
そんな感じで過ごしてきた今月のお仕事でしたが、でもやっぱり…FlexとPHP開発を入れて、さらに仕事じゃないけどこちらのサーバセットアップ(ようやく終わりました…)を合わせると、今月だけで6技術の並走、うち2技術は完全に初歩から。
このトシでこれはやっぱりキツいよ…
キツいけどそれはそれで面白かったりもして、でその面白さが時間の不足や脳ぢからの不足を責め立てるからこそ、疲労もたまるし愚痴も出るんじゃないかなぁ。
…とこれ自体が愚痴か。笑