FlashDevelop を使って、IME を無効にする処理を入れてみました。
日本語入力が有効になっていると、
Flash 内でキーボード操作が効かなくなる場合があります。
そんな時は、IME 操作クラスを使って無効にしてしまいましょう。
Flash の実行画面
|
IME を無効にする
すぐ上のテキストボックス内で日本語入力を ON にして
文字を入力した後、Flash 画面を 1 度クリックして、
もう一度テキストボックスに文字を入力してみてください。
日本語入力が OFF になっていることを確認できると思います。
|
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.system.IME;
/**
* IME を無効にするサンプル
* @author Hikipuro
*/
public class Main extends Sprite
{
/**
* コンストラクタ
*/
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
/**
* 初期化メソッド
* @param e
*/
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
// マウスダウンイベントの登録
// (stage に登録しないと反応しない。)
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
}
/**
* マウスダウンイベント
* @param event
*/
public function onMouseDown(event:MouseEvent):void
{
// IME を無効にする。
// 環境によっては IME 無効処理時に例外が発生するので、例外をスルーする
try { IME.enabled = false; }
catch (e:Error) { ; }
}
}
}
enterFrame イベントのように、毎フレーム処理が走るところに
IME を無効にする処理を入れると、ブラウザ内の他のタブや、
他のアプリケーションのウインドウで IME を有効にできないようになってしまいます。
たいていの人は、Flash が動かないと Flash 表示部分がアクティブになっていないと考えて、
マウスで Flash 表示画面をクリックすると思うので、
マウス押下イベント内に IME を無効にする処理を 入れるのが良いと思います。