FlashからIME
WEB2.0系では大流行の「タグ」ってやつだけど、英語だと非常にラクなんだけど日本語だといろいろとやっかいな問題があって困る。
たとえば、タグ一覧ってのをつくりたいときに、日本語の場合は、あいうえお順で出すには読み仮名が必要になってくる。管理者が決めるタグの場合は、面倒だけどかなも入力してもらうという手があるのだけど、一般ユーザーがつけるタグにかな入力もしてもらうのはなかなかだるそうなインターフェースになってしまう。一覧を作る以外に過去の入力履歴から候補タグを出すみたいなのも同じ問題がある。
で、今実装している案件はFlashベースでそこらへんをやるので、onKeyUpとかを使って、入力されたKeyを受け取ってそれをベースに読み仮名的なKEYを作るようにしているのだけど(IMEが起動しててもonKeyUpのイベントは発生する)、、これもいろいろ問題があって、それは叩いたキーの内容をDELETEやBACKSPACEで消したときに、それがIMEで変換されたデータなのか、そうではない半角のデータなのかを判別して消すというあたりがとてもメンドクサイ、でもそこがちゃんとできないと、半角で保存されたKEYを1文字けすのか2文字消すのか判定しないといけない。まぁできないことはないけど。うーだるい。
StringをバイトコードかASCIIに変換できればもっとラクなんだけど。
あ、escape()でしてみれば、1Byteか2Byteかわかるか。
Flash8からはIMEとの連携がいろいろできるみたいだが・・・・
ちなみに調べてたら
Key.isDown()
でIMEがONかOFFかは判定できるらしい。ただしWindows限定。検索したら2chに出てた。
245 .. IMEがオン
246 .. IMEがオフ
243 .. 全角がオフ
244 .. 全角がオン
242 .. ひらがなモード
241 .. カタカナモード
240 .. 英数字モード
まぁ、だからなんだというわけだけど豆知識として。
今は叩いた文字自体を半角英数にしてるだけで、最終的にあいうえお順にはしようと思ってないからいいんだけど、最終的にあいうえお順にしようとすると、ローマ字入力とかな入力の人でも矛盾がおきる。
いままでかな入力っていう人が存在することを完全に忘れていたけれども、うちのシステムプログラマーのオオツカはかな入力だったりする。
たぶん、プログラマーでかな入力の人は、世界でただ一人ではないかと思ってる。
どちらにしても、かな入力は無視するにしても、汎用性の高いクラスで構築するのが難しいなぁ。Flaファイルに依存する部分が、そこそこ出てしまう・・・| カテゴリー | : | 2005,diary |