前回のエントリーでボタンをクリックしてIMEを切り替えるというのを試しました。
そこで次は、Textフィールドにフォーカスが入るたびに切り替わるものを作ってみました。
今度はMacでも動作確認してみたら、ちゃんとIMEが切り替わっていました。(ことえり)
今回はまず最初にTextInputタグでテキスト入力を並べて、focusInでIME制御を行うswfのfunctionを呼び出す
ものを作りました。(main.mxml)
おそらく中国語の入力に使うであろう、"CHINESE"はうまく動作しませんでした。
PCの状態によってはうまくいくかもしれませんが、作成時の環境では動きません。
次にTextInputに属性を加えて、IME制御用のパラメータを指定できるコンポーネントを作りました。
そのサンプルがmain2.mxmlです。
動いた環境:
FlashPlayer 8(WIN 8,0,5,0) windows2000
FlashPlayer 8(MAC 8,0,5,0) MacOS X 10.3.9
参考にしたもの:
Using Flash Player 8 Features in Your Flex 1.5 Application
必要なもの:
LibLoader.mxml
devnetの記事である、Using Flash Player 8 Features in Your Flex 1.5 Application中の"LibLoader.mxml"が必要です。
今回作ったもの:
IME.mxml
IMEConversion.swfをラップしたものです。devnetの記事通りに作りました。
IMETextInput.mxml
TextInputに属性(useIME/IMEMode)を加えたカスタムコンポーネントです。
main.mxml
IMEConversion.mxmlを使って、FocusInで切り替えるサンプルです。
main2.mxml
IMETextInputを使った例です。
IMEConversion2.zip
今回わからなかったこと:
中国語のIMEに切り替える方法。
Posted by nod at 2005年08月15日 01:21
| コメント (5)
| トラックバック (0)
| Clip!!
|
Clip!!
|
|
digg it!
|
del.icio.us it!
こんにちは
Flexでwebアプリなんかを作ろうとしていて、
ime制御にぶちあたってしまいました。。。
ネットを見ていましたら、当ブログにわかりすくime制御の説明がされていることを発見いたしました。
拝見させていただき、早速、ime制御をしようと実装しておりましたが、フォルダ構成によってime変換用のfunctionが効かなくなりました。
質問なのですが、main.mxmlとIME.mxmlは同じ階層に入れないといけないのでしょうか。
現状をご説明しますと、
以下のようなフォルダ構成にしています。
*testA、testBは同階層
testA
―main.mxml (以下の通りIME.mxmlをインクルード)
testB
―IME.mxmlとその他swf、LibLoader。
*ネームスペースでコンパイル時にエラーあったので、
*修正は致しました。
IMEConversion.swfは読み込んでいそうですが、main.mxmlで
ime制御が不可です。
同階層にIMEとmainを配置していれば、制御可能なのは
わかりましたが、階層がちがってくると現状では
ime制御ができておりません。
打開する方法がございましたら、ご教授いただけますでしょうか。
Posted by: webアプリに挑戦 at 2006年08月04日 15:39
webアプリに挑戦さん
はじめまして。
Flexの実行環境はFlex 1.5だと考えていいのでしょうか?
Flex2.0はコンポーネントでプロパティと指定すればよいのですが、1.5だとそのようにはいきませんね。
ちょっと見てみます。
Posted by: nod at 2006年08月04日 18:18
ご回答ありがとうございます。
はい、ご指摘の通りFlex1.5を使用しております。
2.0だと悩まなくてよいのですが。。
そんな時にここのブログを拝見しまして、
そのような方法が可能であるのかと感動しておりました。
imeの制御ができることはわかったものの、
モジュールの階層が異なってきたときに
どのようにすればよいのか困っております。
以下のようなフォルダ構成の場合を想定しております。
*testA、testB、testCは同階層
testA
―main1.mxml (IME.mxmlをインクルード)
testB
―main2.mxml (IME.mxmlをインクルード)
testC
―IME.mxmlとその他swf、LibLoader。
*当初main1.mxml、main2.mxmlに以下のようにインクルードしておりましたが、
どうもうまくいっておりません。
*<ime:IME xmlns:ime="testC.*" id="ime"/>
その他試行錯誤しておりますが、
成功にいたっておりません。
上記のような場合にimeの制御を行うためにはどのようにすればよいか、
ご教授いただけますでしょうか。
Posted by: webアプリに挑戦さん at 2006年08月04日 20:55
ご回答ありがとうございます。
はい、ご指摘の通りFlex1.5を使用しております。
2.0だと悩まなくてよいのですが。。
そんな時にここのブログを拝見しまして、
そのような方法が可能であるのかと感動しておりました。
imeの制御ができることはわかったものの、
モジュールの階層が異なってきたときに
どのようにすればよいのか困っております。
以下のようなフォルダ構成の場合を想定しております。
*testA、testB、testCは同階層
testA
―main1.mxml (IME.mxmlをインクルード)
testB
―main2.mxml (IME.mxmlをインクルード)
testC
―IME.mxmlとその他swf、LibLoader。
*当初main1.mxml、main2.mxmlに以下のようにインクルードしておりましたが、
どうもうまくいっておりません。
*<ime:IME xmlns:ime="testC.*" id="ime"/>
その他試行錯誤しておりますが、
成功にいたっておりません。
上記のような場合にimeの制御を行うためにはどのようにすればよいか、
ご教授いただけますでしょうか。
Posted by: webアプリに挑戦さん at 2006年08月04日 20:57
webアプリに挑戦さんへ
testCをtestA以下においた場合はいかがでしょう?
testA--main.mxml(IME.mxmlをインクルード)
|-testC
|-IME.mxmlとその他swf,LibLoader
testB,testAともに参照したい場合は、
testCを${アプリルート}/WEB-INF/flex/user_classes/
いかに置くという手もあります。
またはcompcなどでswcにするという方法もあります。
いかがでしょう?
Posted by: nod at 2006年08月07日 19:10
この記事のトラックバックURL
この記事に対するトラックバック
この記事に対するコメント