IME を無効にする

(サンプル一覧を表示する)

FlashDevelop を使って、IME を無効にする処理を入れてみました。

日本語入力が有効になっていると、
Flash 内でキーボード操作が効かなくなる場合があります。
そんな時は、IME 操作クラスを使って無効にしてしまいましょう。
Flash の実行画面
IME を無効にする

Flashプレーヤーが入っていないか、JavaScriptが無効になっているようです。

Get Adobe Flash player

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 を無効にする処理を 入れるのが良いと思います。

外部リンク