RIAトピックス
リッチクライアント/RIAを主テーマに取り扱います。Flex、Ajax、AIR、Silverlight、JavaFX、etc。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【_level0.CUPPY】wmode=transparent で全角テキスト入力するには…
http://level0.cuppy.co.jp/2007/05/wmodetransparent.php

SWFをHTMLに乗せる時、その背景色は
大体はFlex特有のグレイになってしまうのですが、
(bgcolor属性を指定すれば、その指定した色になる)
HTMLに記述するSWF読込のタグで
「wmode」という属性に対して「transparent」と指定すると
HTMLの色をそのまま背景色として表示させることが出来ます。

でもこの指定、ちょっと弱点があって
「transparent」指定をすると、
Flashで日本語入力が使えなくなってしまうのです。
以前から割と有名なFlash Player自体のバグらしいんですが、
この度、私もこのバグと戦うことになりました。

ログイン機能を持つFlexの画面で、
日本語入力の間はいくらキーボードを叩いても
ブラウザがIEだとレイアウトが崩れる、
FireFoxに至ってはTextInputには一文字も入力されない、
という事象が発覚し、
「ユーザーがパニックになるからなんとかしろ!」
という指令をおおせつかったわけです。

Flex2では、TextInputなどの属性にIMEModeを指定することで
入力モードを制御することが出来ます

まずは、TextInputにフォーカスが当たった時に
この指定で入力モードを半角英数に変換するように
してみたんですが、結果は×。

実際には「日本語入力を受け付けない」というバグではなく、
「IME入力を受け付けない」というバグだったようです
Flex2の機能では、
「IME入力モードを半角英数に変更する」
ということしかできないみたいで、
これでは当該の事象を解決できませんでした。

で、次に行ったのが、
IME機能自体を無効化する、と言う対策です。
TextInputに対して
focusInイベントとkeyDownイベントに
「IME.enabled = false」を、
focusOutイベントに「IME.enabled = false」を設定しました。

<mx:TextInput id="id" focusIn="IME.enabled = false" keyDown="IME.enabled = false" focusOut="IME.enabled = true"/>

こちらはおかげさまでうまく動作し、
常に対象のTextInputに対して直接入力のみを
行えるようにできました。あ~~~、よかった。

そもそもHTMLのwmode指定を消せば
当該の現象は発生しなくなるのですが、
それを行うとデザインが破綻する為、できなかったんです。

ふざけたデザインにするから、こんな苦労をする羽目に…。
毎度の事ながら、デザイン部門に振り回された一件でした。



ヨウイチ
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2005 RIAトピックス all rights reserved.
Powered by FC2ブログ.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。