• 締切済み

Actionscriptのキー操作について

お久しぶりです、tsukiです。今度はキー操作について悩みを抱えてしまいました。 使っているFlashはMX2004です。 問題はSPACEキーを押しつづけた際、横からキャプチャー表示が出てくるようにしたいのですが、押し続けているとキャプチャーバーが前に進んでいってしまう現象がおきています。 また、キーを離した際にキャプチャーバーが引っ込むようにしたいのですが、どのようなAction scriptを入力すればいいのでしょうか。 いい案を教えてください、お願いします。

みんなの回答

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

キャプチャー表示 や キャプチャーバー と書かれましても それが何なのかわかりません。 おそらく「自分専用用語」ではないでしょうか? また「前に進んでいってしまう現象」もどういう状況を表しているのか, またなぜその状況が起こるのかもわかりません。 全く何のことかわかりませんが,  SPACEキーを押しつづけた際  ムービークリップがステージ左から右方向に出てくる。  (ただし出てくるにも限度をもうける)  そしてSPACEキーを放した際  ムービークリップがステージの左に返る。 ということでよろしいでしょうか? 簡単にするには次のようにすれば良いと思います。 ステージ上には 「capture_mc」 というインスタンス名を付けたムービークリップ(MC)があるものとします。 その 「capture_mc」 が存在するタイムライン(_root でしたら _root)に書くスクリプトです。 /*======================================= MC「capture_mc」がステージ上にあるものとする =======================================*/ // --- 初期設定部分 -------------------- // 動く左端の座標を設定(※変える) var left_crd:Number = 100; // 動く右端の座標を設定(※変える) var right_crd:Number = 300; // 動くスピードの設定(※変える) var speed:Number = 2/10; // ターゲット座標の初期値(左端座標に一致させる) var target_crd:Number = left_crd; // 「capture_mc」 を初期位置(左端座標)に移動 this.capture_mc._x = target_crd; // --- キーの監視に関する部分 ------------- // キー監視用オブジェクト keyListener を作成 var keyListener:Object = new Object(); // キーダウン時の動作定義 keyListener.onKeyDown = function():Void { // もしスペースキーが押されたら if (Key.getCode() == Key.SPACE) { // ターゲット座標を右端座標にする target_crd = right_crd; } }; // キーアップ時の動作定義 keyListener.onKeyUp = function() { // ターゲット座標を左端座標にする target_crd = left_crd; }; // keyListener を Keyクラスのリスナーとして登録 Key.addListener(keyListener); // --- 「capture_mc」を動かすエンジン部分 ----- // 1フレーム進む時間毎に随時実行 this.capture_mc.onEnterFrame = function():Void { // このMCをターゲット座標にspeedずつ近付ける this._x += (target_crd-this._x)*speed; }; /*======================================*/ // 動く左端の座標を設定(※変える) var left_crd:Number = 100; // 動く右端の座標を設定(※変える) var right_crd:Number = 300; についてです。 「capture_mc」 の基準点の位置や大きさにもよるので何とも言えませんが 100 や 300 は心もち大きめの数値を入れています。 おそらく,左の座標にある状態でも,右座標にある状態でも, どっちともステージ上に丸見え状態だと思います。 この辺の状態から数値を変えていって(下げていって)調節すると感覚がつかみやすいと思ったので大きめの数値にしています。 なお, あくまでもこれはほんの一例に過ぎません。 このような狭いもの1つに捕らわれていては何の進歩もありませんし またFlashの有効活用もできません。 「モーショントゥイーンで何かが左から右に出る」 というアニメーションをムービークリップの中に作成しておいて, SPACEキーを押しつづけた際にそのムービークリップを play() させて, SPACEキーを放した際にそのムービークリップを 逆再生 させても良いです。 「FN0303003 - ロールアウトで逆戻りするアニメーション」 http://www.fumiononaka.com/TechNotes/Flash/FN0303003.html また, モーショントゥイーンをスクリプト化した Tween クラス も MX2004で使用できます。 その他の方法や,その組み合わせやバリエーションまで考えると無数です。 方法は無数ですから, 「押し続けているとキャプチャーバーが前に進んでいってしまう現象」 と書かれましてもどういう状況でそうなるのかかがわからないのです。 どうしたらそうなったのかの説明が不足しています。 したがって,まともに回答するなら,  「そういう現象が起きる仕組みを作ったからそうなるだけ」  「そういう現象が起きないように作れば良い」 としか本来は言えないのです。

tsuki0102
質問者

お礼

お久しぶりです。そしてこの回のご返答ありがとうございます。 おかげさまで一つ解決策が見つかった気がします。 言葉が曖昧すぎてしまい回答を息詰らせてしまうような文章ですみませんでした。BlurFiltanさんの回答は本当に適切で助かっています。 Flash製作はまだ未熟なもので、Actionscriptをいまいち理解していないところがあるので、文章が不適切になってしまいもうしわけありませんでした。 しかしながら、今回の件は貴重な第一歩となり、とても感謝しています。 たびたびKey操作の質問なのですが、先日の回答でSPACEキーを押すとcapture_mcが左から右へ出てくるようにはなったのですが、 今度は同じステージ上で、「モーショントゥイーンで別のムービークリップが下から上へ」出るようにしたいのです。 BlurFiltanさんが教えてくださった前回のActionscriptを別のムービークリップ(インスタンス名alpha_mc)に添付してイベントを「this._x」から「this._y」に変え、 インスタンス指定をalpha_mcにし、初期値をY座標の値に変えてパブリッシュプレビューをしてみたところ、 なぜかステージ上にある「capture_mc」の座標が、alpha_mcのscriptで指定した座標に変わってしまい、alpha_mcのムービークリップはSPACEキーを押しても動かないのですが、これは何が原因なのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • FLASH-MX Professional2004のアクションスクリプトの書き方

    質問お願いします。 以前FLASH-MXをを使っていて、現在FLASH-MX Professional2004使っています。 FLASH-MXではアクションスクリプトを書く際に「ノーマルモード」と「エキスパート」を選べたのですが、FLASH-MX Professional2004では「ノーマルモード」と「エキスパート」を選択するボタンが見つかりません。 FLASH-MX Professional2004を使っている方、宜しくお願いします。

  • Key操作について

    http://www.kaitopurin.com/ 上記のサイトの様にキャラクターをキー操作によって動かしたいのですが、わかりません。 var thirom:MovieClip; var back:MovieClip; var speed:Number = 4; thirom.onEnterFrame = test; function test():Void { if(Key.isDown(Key.LEFT)) this._x -= speed; if(Key.isDown(Key.RIGHT)) this._x += speed; if(Key.isDown(Key.UP)) this._y -= speed; if(Key.isDown(Key.DOWN)) this._y += speed; } 途中までスクリプトを書いてみたんですが、ここから先がわかりません。例えば動かす対象のムービークリップ内にジャンプやしゃがむ動作を取り入れて、ラベルなどで移動する方法が一般的なんでしょうか? どうかご教授お願いします。 環境はMac,flash8です。

    • ベストアンサー
    • Flash
  • FlashLite3.0でキー操作のスクリプト

    初めまして。 Flashlite3.0(携帯用)でキー操作で240×240のマップ上をキャラクターが移動するアクションスクリプトを知りたいのですが、ネット等で検索した所、PCでキャラクターが移動する方法しか見つかりませんでした。 4で←8で↑6で→2で↓というように移動させたいです。 また、240×240以上越えると当たり判定で先に進まないようにしたいのですが、わかる方、もしくは説明しているサイトを知っている方がいらっしゃれば、お教え下さい。 宜しくお願いします。

  • キー操作その2の質問です

    困っています お久しぶりです。そして前回のご返答ありがとうございます。 おかげさまで一つ解決策が見つかった気がします。 言葉が曖昧すぎてしまい回答を息詰らせてしまうような文章ですみませんでした。前回の回答は本当に適切で助かっています。 Flash製作はまだ未熟なもので、Actionscriptをいまいち理解していないところがあるので、文章が不適切になってしまいもうしわけありませんでした。 しかしながら、今回の件は貴重な第一歩となり、とても感謝しています。 たびたびKey操作の質問なのですが、先日の回答でSPACEキーを押すとcapture_mcが左から右へ出てくるようにはなったのですが、 今度は同じステージ上で、「モーショントゥイーンで別のムービークリップが下から上へ」出るようにしたいのです。 BlurFiltanさんが教えてくださった前回のActionscriptを別のムービークリップ(インスタンス名alpha_mc)に添付してイベントを「this._x」から「this._y」に変え、 インスタンス指定をalpha_mcにし、初期値をY座標の値に変えてパブリッシュプレビューをしてみたところ、 なぜかステージ上にある「capture_mc」の座標が、alpha_mcのscriptで指定した座標に変わってしまい、alpha_mcのムービークリップはSPACEキーを押しても動かないのですが、これは何が原因なのでしょうか?

    • ベストアンサー
    • Flash
  • Flashのキーボード操作で

    キーボードのテンキーでコマンドを選択するアクションスクリプトをくんでいるのですが・・・・・ onClipEvent (keyDown) { if (Key.isDown(Key.UP) or Key.isDown(Key.DOWN)) { this._y += 30; } else if (Key.isDown(Key.UP) or Key.isDown(Key.DOWN)) { this._y = -30; }else if (Key.isDown(Key.LEFT) or Key.isDown(Key.RIGHT)){ this._x = +50; }else if (Key.isDown(Key.LEFT) or Key.isDown(Key.RIGHT)){ this._x = -50; } if (Key.isDown(Key.SPACE)) { _root.flag = 1; } } というアクションスクリプトを組むと上下はうまく移動するのですが横移動がうまくいきません。いきなり予期しないところに移動してしまったりしてしまいます・・・・。

    • ベストアンサー
    • Flash
  • 携帯でのFLASHキー操作について

    携帯端末で使用するFLASHを作成しているのですが、キー操作の点で困っております。 docomoのi/menuの様な、ボタンにカーソルが移ると説明が横の方に表示されるという体裁を取りたいと思っています。 Flash自体は完成しております。 そこでFlashを挿入するタグについて質問です。 docomoで提示されているキー操作の可能なタグの記述フォーマットは以下の通りでした。 <object declare id="[objectタグのid]" data="[URL]" type="application/x-shockwave-flash" > <param name="bgcolor" value="[ColorName/ColorCode]"> <param name="loop" value="on/off"> <param name="quality" value="high/medium/low"> </object> <a iswf="#[objectタグのid]" href="[URL]">{表示文字列}</a> この方法だとキー操作は確かに出来るのですが、i/menuのようなFlashがページ内に埋め込んである形式をとれません。 インライン再生のタグではもちろんFlashをページ内に埋め込む事が可能ですが、キー操作ができないので困っております。 i/menuはなんらかの特別な仕組みで作られているのでしょうか? 初歩的な質問ですみません(汗 ページに埋め込み式でキー操作の出来るタグをご存じの方がいらっしゃいましたら、是非教えて下さい。 よろしくお願い致します。 *FLASH作成はAdobe Flash CS3を使用しております。 *FLASH Lite1.1で作成しています。 *FLASHの動作確認はAdobe Device Central CS3で確認しましたが問題ありませんでした。 *携帯での動作確認に使用した機種はdocomoのN901iSです。(FLASH Lite1.1対応・ポインティングデバイス対応) 機種が古いのでFLASH Lite3.0に対応してません。しかしi/menuは普通に操作出来るので、バージョンの問題ではないと思われます。

  • flashでボタンからリンクで他のファイルを開く方法

    flash professional MX2004でflashコンテンツを作成しています。現在コンテンツ内にボタンを設置、そこをクリックすると他のファイルが開くようにしたいのですが、どの方法で行うのでしょうか?Action scriptで行えばいいのでしょうか? Dreamweaverではリンク欄にURLを入れるような操作でできるのですが? お願い致します。

  • flashのキーボード操作についてなのですが

    flashのキーボード操作についてなのですが WindowsでSuzukaというフリーソフト使用してflashを作成しているのですがキーボード操作の作成方法がわかりません。 最初は停止していてEnterキーを押すと再生されて再生中にEnterキーを押すとそこで停止されるようにしたいです。 フレームアクションのスクリプトをどのようにすればいいでしょうか?

    • ベストアンサー
    • Flash
  • 携帯版flashの開発について

    現状、確認はiモードHTMLシミュレータを使用しています。 また、作成はFLASHーMXを使用しています。 スクリプト自体は公式なスクリプトを使用しているので 問題は無いかと思いますが、書き出したSWFは携帯画面表示されるのですが、指定したキー操作がまったく出来ません。 またPC上での画面確認ではMAC系では表示され、WindowsIEでは表示されません。表示されるFLASHでは動作もします。 auに対応しているFlash Lite1.1で書き出し、 DOCOMOはFlash Lite1.0、Flash Lite1.1などでも書き出しています。携帯キー操作するのには何かこつがあるのでしょうか?

  • Flash MXのアクションのノーマルモード

    Action Scriptは現在勉強中で、ノーマルモードで使用しています。 自宅では去年購入したFLASH MXを使っていて、ノーマルモードとエキスパートモードの切り替えは簡単にできるのですが、会社のパソコンにインストールされているFLASH MX Professional 2004ではノーマル・エキスパートモードの切り替えの仕方がわかりません。 もしかしてFLASH MX Professional 2004にはそういった機能はないのでしょうか? どうか教えてください。

このQ&Aのポイント
  • 年金生活者の友人が言うには、現在のインフレには年金だけで何とか対処する工夫で乗り切り、なけなしの預金には手を付けないと言っています。
  • 年金の額にもよると思いますが、皆さんはどのようなことをお考えでしょうか。
  • 年金生活者がインフレに対処する方法や節約術、投資などについて教えてください。
回答を見る