AS3.0でテキストボックスにフォーカスを当てる方法

このQ&Aのポイント
  • AS3.0でテキストボックスにフォーカスを当てる方法について教えてください。
  • Selection.setFocus(ipt);でフォーカスを当てられると調べましたが、エラーメッセージが表示されてしまいます。
  • import文が必要なのでしょうか。ご教示いただけますと幸いです。
回答を見る
  • ベストアンサー

テキストボックスにフォーカスをあてる

いつもお世話になっております。 actionscript3.0にて、テキストボックスにフォーカスを当てる プログラムを作りたいと思っております。 ソースは以下の通りです。 package {   public class hoge extends MovieClip {     public var ipt:TextInput;     public function hoge() {      Selection.setFocus(ipt);     }   } } Selection.setFocus(ipt); でテキストボックスにフォーカスが当たると調べたのですが ↓のエラーメッセージが表示されてしまいます。 「1120: 未定義のプロパティ Selection へのアクセスです。」 何かimportしなくてはいけないのでしょうか。 よろしくご教示お願い申し上げます。

  • Flash
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

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

Selection は import するしないの問題でなく ActionScript 2.0 まで存在していたクラスです。 import の必要があるのはそれではなく MovieClipクラス と コンポーネントの TextInput クラスです。 ----------------- package { import flash.display.MovieClip; import fl.controls.TextInput; public class hoge extends MovieClip { public var ipt:TextInput; public function hoge() { ipt.setFocus(); } } } ----------------- ただ..., ブラウザでページを開いたときにフォーカスが当たっているのはブラウザの部分のどこかで つまり,Flash(SWF)以外の部分ですから, 上のようにコンストラクタ内 にスクリプトで 表示されたとたん TextInput にフォーカスを与えるようにしても すぐには入力できないので,やっていることは無意味に近いですよ。 パブリッシュしたSWFをスタンドアローンの Flash Player で開くのであれば意味があるのかも? (↑もちろん一般的閲覧者は普通そんなことしませんが。) ご質問されているスクリプトはあくまでも単なるサンプル例であって 実際には使わず,どこか他の場所(他のタイミング)で使うのであれば問題ないと思います。

wonder_dct
質問者

お礼

BlurFiltanさん、ご回答ありがとうございます。 ご返信が遅くなり、大変申し訳ございません。 addEventListener(Event.ADDED_TO_STAGE, init); を追加したところうまくできました。 ありがとうございました。

関連するQ&A

  • テキストボックスのフォーカス移動

    こんにちは。 htmlページで<input type="text"/>に既定の桁数を入力したら次のinputにフォーカスを 移動させたいと考えています。 下の例の場合、1番目のテキストボックスに既定の桁数5ケタを入力したら、フォーカス を2番目のテキストボックスに移動させ、2番目のテキストボックスに4ケタ入力したら 3番目のテキストボックスにフォーカスを移動させるようにしたいと思っています。 スクリプトの再利用ができるよう、たとえば同じname属性を与えればその範囲内で 簡単にフォーカスを移動させられるようなものにしたいと思うのですが、うまくいきません。 何か良い書き方はありませんでしょうか? <div>  <input type="text" name="hoge" maxlength="5" onkeyup="test(this)"/>  <input type="text" name="hoge" maxlength="4" onkeyup="test(this)"/>  <input type="text" name="hoge" maxlength="5" onkeyup="test(this)"/>  <input type="text" name="hoge" maxlength="2" onkeyup="test(this)"/> </div>  ・  ・ <script type="text/javascript"> function test(elm) {  if (elm.value.length >= elm.maxLength) {   /*(気持ちとしては、ここにこのような感じのことを書きたいのですが・・・)     var arr_elm = document.getElementsByName(elm.name);     var n = elm.index + 1     arr_elm[n].focus();   */   } } </script>

  • テキストボックスにフォーカスを当てる?

    こんばんは,すみませんよろしくお願いします。 テキストボックスにフォーカスを当てるには,例えば, TextBox1.SetFocus のようにするんだと思うのですが,テキストボックスに初期値が設定されていたときには,上記のようにすると,初期値のテキストの右側に線のようなポインタがテキストコントロール内にでてきます。 しかし,このような状態では,いったん初期値を消さないと,別の値に書き換えることは出来ません。 テキストコントロール内に初期の値として,何らかのテキストが入力されているとき,文字列が選択された状態になっていれば,即,別の値を入力することが出来ますので,ユーザーフォームをshowしたときに,テキストボックス内の初期値 (例えば,「ここに名前を入力してください」などの文字列) を選択した状態にしたいのです。どのようにすれば良いのでしょうか?何度もすみません。

  • AS3の拡大と縮小について

    下記の外部ASで試しているのですが比率を維持して拡大されます。 予想では横は100%で縦に300%伸びて表示されるはずなのですがなぜ比率が 維持されるのでしょうか? また、縦だけとこ横だけ拡大や縮小するにはどう書けばいいのでしょうか? package { import flash.display.*; import flash.events.*; import flash.text.*; public class Main extends MovieClip { private var mc:MovieClip; private var text:TextField; public function Main():void { mc = new MovieClip(); addChild(mc); text = new TextField(); text.text = "テスト"; text.scaleX = 1; text.scaleY = 3; mc.addChild(text); } } }

    • ベストアンサー
    • Flash
  • テキストフィールドのフォーカス設定について

    どなたかご存知でしたら是非ご教示ください。 インスタンス名が「id」というテキストフィールドをステージに配置します。 1フレーム目に、   Selection.setFocus("_root.id"); というスクリプトを書きます。 これで、再生したらテキストフィールドにフォーカスが設定されると期待しているのですが、そうなりません。 そこで、ボタン用のムービークリップを作り、ステージに配置(インスタンス名:focusSetButton)し、   _root.focusSetButton.onRelease = function() {     Selection.setFocus("_root.id");   } というスクリプトを1フレーム目に書きます。 これでムービーを再生してもフォーカスは設定されませんが、「focusSetButton」をクリックすると、フォーカスが設定されます。 ユーザーのアクションを伴わない場合は「Selection.setFocus」は無効で、ボタンクリックのようなユーザーアクションが伴うと有効になるのは何故なんでしょうか? また、ユーザーアクションが伴わずにフォーカスを設定する方法はあるでしょうか? 動作環境はWindows XP ServicePack 2のFlash 8です。 この現象は、アプリケーション上での再生でも、フラッシュファイル単体での再生でも、HTML内での再生でも起きます。 何かヒントになるようなことでもかまいませんので、よろしくお願いいたします。

  • FlashLite4.0について

    いつもお世話になっております。 FlashLite4.0についてお聞きしたく存じます。 以下のようにFlashLite4.0でコードを書き勉強中です。 (Flashも始めたばかりなのですが。) example.fla(アクションフレーム) -------------------------------------------------- stop(); import com.Example; var example:Example = new Example; com/Example.as -------------------------------------------------- package com {  import flash.display.Sprite;  public class Sample08 extends Sprite {   public function Sample08() {    init();   }   protected function init():void {    var time:Time = new Time;    addChild(timeView);   }  } } com/Time.as -------------------------------------------------- package com {  import flash.display.MovieClip;  public class TimeView extends MovieClip {   public function Time() {    // これが出力されると思っております。    trace("time");   }  } } パブリッシュをすると「time」が出力されると考えていたのですが出力されません。 また、flashLite4.0で動的にテキストを出力するにはどうしたらよろしいでしょうか。 ご教示よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • AS3.0 カスタムクラスのMCをMainで呼び出

    AS3.0 カスタムクラスのMCをMain.asで呼び出ししたいのですが、上手く機能しません。 どうして動かないのか具体的に教えてもらえると助かります。 エラー・コード:Main.as, Line 20 1180: Call to a possibly undefined method createBox. 【Main.as】 package{ import flash.display.*; import flash.events.Event; import flash.events.TimerEvent; import flash.utils.Timer; import boxClass; public class Main extends Sprite{ //property private var item:boxClass; //constractor public function Main(){ box(); } //method public function box():void{ item=new boxClass(); item.createBox(this); } } } 【boxClass.as】 package{ import flash.display.*; import flash.events.Event; public class boxClass extends MovieClip{//boxクラス //property private var thisClass:Object; //constractor public function boxClass():void{} //method public function createBox(tm:MovieClip):void{ thisClass = this; trace("テスト"); var mc:boxMC=new boxMC(); thisClass.addChild(mc); } } }

  • テキストボックス入力後、警告メッセージを表示し、フォーカスを移動させない方法について

    テキストボックスの入力チェックを行うために下記のようなソースを記述しました。 下記を実行するとテキストボックスにどんな文字を入力してもメッセージボックスを表示し、 フォーカスが移動しない形となっております (厳密にはボタンにフォーカスが移動した後、テキストボックスにフォーカスを移動しています)。 これは Me.テキストボックス.SetFocus のみを記述した所、次の場所にフォーカスが移動してしまい、 下記のように書くとフォーカスが移動していないように見えるため、このようにしました。 ただこの記述はいささか強引な感じなので、これを改良したいと思っております。 2回フォーカスを移動させるのではなく、フォーカス移動を抑止する方法がベストと思いますが、 方法が分からなかったので、何かしらアドバイスをいただけれる方がいらっしゃいましたらよろしくお願いします。 【ソース】 Private Sub テキストボックス_AfterUpdate() MsgBox "エラー" Me.ボタン.SetFocus Me.テキストボックス.SetFocus End Sub 以上、よろしくお願いします。

  • フォーカスを最初から入力ボックスに与えたい

    宜しくお願いします。初心者です。 簡単なクイズ用のフラッシュを作りたいと思っています。 フラッシュが起動したら、自動的に回答ボックスに答えを入力できるように、フォーカスを与えたいのですが、うまくいきません。 回答ボックスのインスタンス名を「 myAns 」として、次のようなASを書きました。 myAns.onEnterFrame = function(){ Slection.setFocus(myAns); }; フォーカスは与えられますが、ずっと選択されてて一文字しか入力できない状態になります。 どうすれば良いのでしょうか?

    • ベストアンサー
    • Flash
  • [IE]初回表示時にフォーカスを外す

    いつもお世話になっております。 内容はタイトル通りなのですが ボタンを押して飛んだ先のページでフォーカスがどうしても 先頭のテキストボックスにあるのを外してどこも選択していない 状態にしたいのです。 Firefoxでは出来たのですが、IEがどうしてもうまくいきません。 コードは focusRemove(hoge); 中略 function focusRemove(hoge) { var element = document.getElementById(hoge); element.blur(); } お願い致します

  • どこにもフォーカスを当てたくない

    フォームを開いたとき、どこにもフォーカスを当てたくないです。 アクセス2003です。 フォームにテキストボックスを1つ設置して、そのフォームを開くと フォーカスがテキストボックス上で、点滅しますが どこにもフォーカスを当てない方法あるのでしょうか? Private Sub Form_Open(Cancel As Integer) Me.詳細.SetFocus End Sub とするとコンパイルエラーになってしまいます。 不可能でしょうか?よろしくお願い致します。

専門家に質問してみよう