• ベストアンサー

keyCodeの反応

kuri627の回答

  • ベストアンサー
  • kuri627
  • ベストアンサー率85% (6/7)
回答No.1

参考URLの一番下にあるサンプルで動作を確認してください。 stage.focus で、フォーカスの移動は可能ですが、「swfが読込まれたとき」を判定するイベントが必要です。 サンプルではkeyCodeを取得するイベントリスナーがstageではなくSpriteに設定されています。 SpriteをクリックされるとフォーカスがSpriteに指定され、keyCodeを取得できる流れだと思います。 >stageよりもムービークリップを先にクリックされた場合、stageをクリックしていないのでキーボードを押しても無反応ですよね? そのMovieClipにイベントリスナーを持たせるか、MovieClipをクリックされた時にkeyCodeを取得するイベントリスナーを設定した対象へ[stage.focus]を設定すれば、イベントの取得が可能ではないでしょうか? 細かいファイルの状況等は分かりませんので、おおまかにイメージだけ。

参考URL:
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/events/KeyboardEvent.html
flash0
質問者

お礼

MovieClipにイベントリスナーを持たせることにしました 回答いただきありがとうございました

関連するQ&A

  • Flash AS3.0 初歩的な質問

    現在AS3.0を勉強中です。 基本中の基本だと思いますがパスが上手く通っていないようなので ご教授願いたく。 1.ステージ上にテキストボックス(ダイナミックテキスト)を配置しインスタンス名を「hako」としています。 2.rootに以下のスクリプトを記述 ------------------------------------------------- addEventListener(Event.ENTER_FRAME,syori); function syori(eventObject:Event):void { hako.text=String(stage.mouseX); } ------------------------------------------------- ここまでは問題なく動作しています。 2をrootでは無く任意のムービークリップから処理させるべく・・・ 3.「abc」というインスタンス名のムービークリックを作成しステージに配置。この1フレーム目に以下のスクリプトを記述 ------------------------------------------------- addEventListener(Event.ENTER_FRAME,syori); function syori(eventObject:Event):void { parent.hako.text=String(stage.mouseX); } ------------------------------------------------- ※この際、2でrootに記述したスクリプトは消しています。 これで動くと思ったのですがエラーがでます。(ToT;) 「parent.hako.text」の部分を「root.hako.text」としてもエラーがでます。「_parent」も「_root」も駄目です。(「_」付はAS2.0までですよね?) 今回はダイナミックテキストは使った例ですが、 単純にムービークリップをステージに配置して、その座標を指定するような処理でも、 他のムービークリップから別のムービークリップを参照する方法が解りません(汗) どうすればよいでしょうか? AS2.0までは上記のような形でパスが通ったと思うのですが・・・

  • マイクに反応する映像をつくったのですが...

    マイクの音声に反応して動くムービーを作りました。 マイクの音が入ったら、ステージに配置したムービークリップが進み、音声が入らなくなったらムービークリップが止まるというものです。 マイクで反応するムービーの後にマイクに反応せず進むムービーをつけたいと考えていますが、うまくいきません。 良い方法はないものでしょうか。よろしくお願い致します

  • AS3.0 配置したインスタンスにswfの読み込み

    初歩的なご質問です。 AS3.0にて、ステージ上に配置したムービークリップ(インスタンス名:mc)に外部swf(test.swf)を読み込みたいのですが、、どうもうまくいきません。 わかりやすく申しますと、AS2.0形式では mc.loadMovie("test.swf"); となっているスクリプトをAS3.0で行いたいです。 拙い文章で恐縮ですが、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 子swfから親swfのstageを参照したいです

    親swf(a.swf)のアクションスクリプトで子swf(b.swf)を読み込んでいます。 フルウィンドウのFlashを作る勉強中です。 親swfには stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; などの指定がしてあります。 そして、子swf(b.swf)内で親swf(a.swf)のstageをターゲットとしたイベントリスナーを使いたいのですが、 リスナー関数のアクションがうまく動いてくれません。 (リスナー関数のターゲット指定の方法が間違っているだと思うのですが、結果としてリスナー関数が正常に動かずy座標の値が意図した位置に表示されないのだと思います。) 以下のサイトを参考に試行錯誤中です。 http://riptac.net/html/memo/memo_actionscript/memo_actionscript_233/ MovieClip(root.parent).funcOya(); と言う、親に記述された関数の参照方法を特に参考にして 親のステージを指定しようと思いたったのですが… 『強制型変換に失敗しました。…flash.display.MovieClip に変換できません。』 とエラーが出てしまいます。 同じ事をしているように思えてしまうのですが… どのように指定したら良いのでしょうか。 どうぞご教授のほど宜しくお願い致します。 ※FlashCS4、AS3、Windowsで作業しています。 a.swf------------------------------------------------------- var bLoader:Loader = new Loader(); var bUrl:String = "b.swf"; var bLoader_mc:MovieClip; bLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, funcCompB); bLoader.load(new URLRequest(bUrl)); function funcCompB(e:Event):void{ bLoader_mc = MovieClip(bLoader.content); addChild(bLoader_mc); } b.swf------------------------------------------------------- //移動させる背景画像 var bgMC:MovieClip=new BgMC(); addChild(bgMC); bgMC.x=0; //親swfをムービークリップ化 var oyaMC:MovieClip=MovieClip(root.parent); //ウィンドウがリサイズするたびに位置を合わせる oyaMC.stage.addEventListener(Event.RESIZE, resizefunc); function resizefunc(event:Event):void{ bgMC.y=oyaMC.stage.stageHeight; }

  • AS3でステージのサイズ変えた時にムービークリップが減速して中央に移動

    AS3でステージのサイズ変えた時にムービークリップが減速して中央に移動するFlashの作り方で悩んでいます。 参考にしてるものはこれなんですが↓ http://hfm-kenchan.com/Lesson/sample/centermovie11/top.htm これをActionScript3で作ろうと今現在このようにコーディングをしています。 ※my_mc:ステージ中央にあるムービークリップ stage.align=StageAlign.TOP_LEFT; stage.scaleMode=StageScaleMode.NO_SCALE; stage.addEventListener(Event.RESIZE, resize_control); function resize_control(eventObject:Event):void { my_mc.x = (stage.stageWidth - my_mc.width)/2; my_mc.y = (stage.stageHeight - my_mc.height)/2; const spd:Number=1/5; my_mc.addEventListener(Event.ENTER_FRAME, center_movie); function center_movie(event:Event):void { my_mc.x += ((stage.stageWidth - my_mc.width)/2 - my_mc.x)*spd; my_mc.y += ((stage.stageHeight - my_mc.height)/2 - my_mc.y)*spd; } } 現在はリサイズするとmy_mcはステージ中央にいるのですが参考にしてるものみたいに減速して中央に移動するというものが作れません。 どうしたらいいのかどなたかアドバイスしていただけませんか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • Flexでのキーイベント取得について

    Flexでキーイベントを、 stage.addEventListener(KeyboardEvent.KEY_DOWN, イベント関数); こういう風に、stageにキーイベントを設けているのですが、 ウィンドウにフォーカスされてない時?などにイベントがとれません。 (ロード後やウィンドウをクリックした際は大丈夫です。) どうにか、ウィンドウにフォーカスされてない時でもキーイベント取得する方法はないのでしょうか? できれば、flex内で処理したいのですが、javascriptでも構いません。 どなたかいい方法があればご回答を宜しく御願いします。

  • マウスカーソルをカスタマイズしたのですが…

    FlashCS4でAS3.0を使用しています。 マウスポインタを任意の形を作成して、ムービークリップにして、インスタンス名を「point_mc」として、ステージ上に配置し、スクリプトを下記のように記述しました。 ---------------------------------------------------------- Mouse.hide(); stage.addEventListener(MouseEvent.MOUSE_MOVE, function(e){ point_mc.x=stage.mouseX; point_mc.y=stage.mouseY; }); --------------------------------------------------------- その後にムービープレビューしますと、マウスのカーソルが先の任意に作成(point_mc)したのに変わってました。 そこまでは良かったのですが、その変わったマウスをボタンインスタンス(インスタンス名:skip_bt)に乗せても、ロールオーバーもしなければ、ボタンをクリックする事が出来ないのです。 因みに「skip_bt」に対するスクリプトは下記のように記述しました。 -------------------------------------------------------- skip_bt.addEventListener(MouseEvent.CLICK, introClick); function introClick(evt:MouseEvent):void { gotoAndStop("intro"); } -------------------------------------------------------- このままだと、ただマウスカーソルが、任意で作成したムービークリップになっているだけで、ボタンを押したりする事が出来ません。クリックする事が出来なくて困ってます。 解る方がおりましたら、アドバイス・ご指導をお願い致します。 よろしくお願い致します。

  • Flash MCのモーショントウィーン

    Flash CS5 ActionScript 3.0にて制作しています。 ムービークリップに動きをつけて色を変更するスクリプトを書いています。 ・ボタン1を押すとムービークリップの色が変わる ・ボタン2を押すと10フレーム目に飛んでモーショントウィーン それぞれ機能は正常に動くのですが、ボタン1を押した後にボタン2を押すとモーショントウィーンが動きません。 ボタン2を押した後にボタン1を押す場合は動きます。 ムービークリップのインスタンス名はtest として下記のようなスクリプトを書いています。 どなたか、お力をお貸し下さい。 よろしくお願い致します。 btn.addEventListener(MouseEvent.CLICK, black); black(event:MouseEvent):void { var color = new flash.geom.ColorTransform(0, 0, 0, 1); test.transform.colorTransform = color; } btn2.addEventListener(MouseEvent.CLICK, btn2); function btn2(event:MouseEvent):void{ gotoAndPlay("10"); }

    • ベストアンサー
    • Flash
  • (AS3)ムービークリップからメインタイムラインにある関数を呼び出したい

    質問はタイトルの通りです。 実は以前同じ質問(http://oshiete1.goo.ne.jp/qa3811855.html)をしましたところ、次のような回答をいただきました。 「 [メインタイムライン] function aaa(){ trace("ok") } [testMC] this.addEventListener(MouseEvent.CLICK , onClick) var rootObj:MovieClip = this.root as MovieClip; function onClic(event:MouseEvent):void{ rootObj.aaa(); } 」 たしかに、この方法はムービークリップ(testMC)をステージに手動で配置したときには有効でしたが、stage.addChild()を使って配置したときには関数を呼び出すことができませんでした。 ちなみに、呼び出そうとすると次のようなエラーがでます。 「 ReferenceError: Error #1069: flash.display.Stage にプロパティ aaa が見つからず、デフォルト値もありません。 」 stage.addChild()で配置したムービークリップから、メインタイムラインの関数を呼び出すにはどうすればよいのでしょうか? 困っています。どうか力を貸してください。

    • ベストアンサー
    • Flash
  • Flash professional CS5を使っており,AS3.0で

    Flash professional CS5を使っており,AS3.0で記述しています。 外部swf(test.swf)をムービークリップ(my_mcとしました)に読み込むには どのようにコードを記述すればよいのでしょうか? MovieClipLoaderを使う物や var urlReq:URLRequest=new URLRequest("test.swf"); var swfLoader:Loader=new Loader(); swfLoader.load(urlReq); このようにロードする方法は見つかったのですが my_mc = loader.content as MovieClip; などとしても ムービークリップに読み込めません。 いろいろ試したのですが直接ステージに読み込まれて表示されたり,エラーも起こらず表示されなかったりします。 よろしくお願いします。

    • ベストアンサー
    • Flash