• 締切済み

キーボートキー完全にロック掛けるというか、禁止させる方法がありましたら

キーボートキー完全にロック掛けるというか、禁止させる方法がありましたらご教授よろしくお願いします。 テキスト入力後「←」キーを押すとカーソルが前に移動しますが、、、これを禁止させたいです。 つまり、テキスト入力後「←」キーを押しても、カーソルの位置が文字列の最後の所にいるようにしたいですが、、、可能でしょうか? よろしくお願いいたします。

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.3

#2 です。 #1では テキストフィールド を ダイナミックテキスト にしたり テキスト入力 に戻したりとごちゃごちゃしてますが, これは onEnterFrame を使って 1フレーム時間 (1/12 秒 など) 実行を遅らせると こういう ごちゃごちゃ はしなくて済むようです。 ヘルプに onEnterFrame を使う方法が書いてありました。 > マウスによるカーソル移動も無効にすることができますか? それも合わせて考えた(考え直した)スクリプトを以下に書きます↓。 ============================================ //対象テキストフィールドを設定 var target:TextField = my_txt; //onEnterFrame を設定するためのムービークリップを作成 this.createEmptyMovieClip("OEF_mc", this.getNextHighestDepth()); //カーソルを最後に固定する関数を定義 function setCursorEnd():Void { //対象テキストフィールドにフォーカスがあるときのみ実行 if (Selection.getFocus() == String(target)) { //実行を1フレーム時間後にずらす OEF_mc.onEnterFrame = function() { //対象テキストフィールドの文字数を取得 var endIndex = target.text.length; //フォーカスのあるテキストフィールドの最後を選択 Selection.setSelection(endIndex, endIndex); //この OEF_mc.onEnterFrame を削除 delete OEF_mc.onEnterFrame; }; } } //--- //キー監視用にするオブジェクトを作成 var keyObj:Object = new Object(); //キーが押されたとき と 放されたとき に実行する関数を定義 keyObj.onKeyDown = keyObj.onKeyUp=function ():Void { //キーが「←」または「↑」のときのみに実行 if (Key.getCode() == Key.LEFT || Key.getCode() == Key.UP) { //定義した関数setCursorEndを実行 setCursorEnd(); } }; //Keyクラスの監視役にkeyObjを登録 Key.addListener(keyObj); //--- //マウス監視用にするオブジェクトを作成 var mouseObj:Object = new Object(); //マウスが押されたときに実行 mouseObj.onMouseDown = mouseObj.onMouseUp=function () { //定義した関数setCursorEndを実行 setCursorEnd(); }; //Mouseクラスの監視役にmouseObjを登録 Mouse.addListener(mouseObj); ============================================ onEnterFrame を _root や 他の ムービークリップ に設定できれば this.createEmptyMovieClip("OEF_mc", this.getNextHighestDepth()); は特に要りません。 OEF_mc.onEnterFrame = …  ↓↓ _root.onEnterFrame = … のように変更すれば済みます。  

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

> テキスト入力後「←」キーを押しても、 > カーソルの位置が文字列の最後の所にいるようにしたい   & > アクションスクリプト2.0を利用して その特殊仕様な入力用テキストフィールドに 「my_txt」という インスタンス名 を付けたとします。 その「my_txt」が存在するフレームに記入するスクリプト例です。 ------------------ //対象テキストフィールドを設定 var target:TextField = my_txt; //キー監視用にするオブジェクトを作成 var keyObj:Object = new Object(); //キーが押されたとき と 放されたとき に実行 keyObj.onKeyDown = keyObj.onKeyUp = function () { //対象テキストフィールドにフォーカスがあるときのみ実行 if (Selection.getFocus() == String(target)) { //キーが「←」または「↑」のとき if (Key.getCode() == Key.LEFT || Key.getCode() == Key.UP) { //対象テキストフィールドの文字数を取得 var endIndex = target.text.length; //フォーカスのあるテキストフィールドの最後を選択 Selection.setSelection(endIndex, endIndex); } } }; //Keyクラスの監視役にkeyObjを登録 Key.addListener(keyObj); ------------------ 「←」キー や 「↑」キー押しっぱなしにすると その押しつづけている間だけフォーカスが動いてしまいますが。。。 ================== 次の方がもう少し厳重かもしれません。 ------------------ //対象テキストフィールドを設定 var target:TextField = my_txt; //キー監視用にするオブジェクトを作成 var keyObj:Object = new Object(); //キーが押されたとき と 放されたとき に実行する関数を定義 function keyDownUp(dwn_flg) { //対象テキストフィールドにフォーカスがあるときのみ実行 if (Selection.getFocus() == String(target)) { //キーが「←」または「↑」のとき if (Key.getCode() == Key.LEFT || Key.getCode() == Key.UP) { //もし渡された引数がtrueであれば if (dwn_flg) { //対象テキストフィールドをダイナミックテキストにする target.type = "dynamic"; } else { //対象テキストフィールドの文字数を取得 var endIndex = target.text.length; //フォーカスのあるテキストフィールドの最後を選択 Selection.setSelection(endIndex, endIndex); //対象テキストフィールドをテキスト入力にする target.type = "input"; } } } } //キーが押されたときに実行 keyObj.onKeyDown = function() { keyDownUp(true); }; //キーが放されたときに実行 keyObj.onKeyUp = function() { keyDownUp(false); }; //Keyクラスの監視役にkeyObjを登録 Key.addListener(keyObj); ------------------  

sapphirejp
質問者

お礼

BlurFiltan様、 思う通りにできました!いつもありがとうございました! もう一つ質問ですが、 この場合もし、マウスで入力したテキストをクリックするとカーソルがそこへ移動しちゃいますが、 マウスによるカーソル移動も無効にすることができますか? 是非、ご教授よろしくお願いいたします。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

例えばこんなフリーソフト http://www.gigafree.net/utility/keyboard/keyswap.html キーボードのキーを無効化したり、違うキーに割り当てる ただ、カーソルキーを無効化するとものすごく不便になるとは思いますけどね。

sapphirejp
質問者

補足

web2525様 すみません、説明不足でした。 アクションスクリプト2.0を利用してコードを書いて、キーボートのキーを無効化したいです。