• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ムービークリップの中フレーム移動を「キーボード」で行いたい!)

ムービークリップの中フレーム移動を「キーボード」で行いたい!

このQ&Aのポイント
  • FLASH初心者なのですが、ちょっとしたクイズを作らなくてはいけなくて、ActionScriptに挑戦しています。
  • rootのタイムラインに下記のようなscriptを書いて、フレーム移動の動作を制御しようとしていますが、うまくいきません。
  • フレーム間の移動や条件分岐の文法についてよく理解していないので、どのように修正すれば目的の動作が実現できるのか教えていただけると助かります。

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

loopとかif...else if...などはあまり関係ないような...。 それより, 具体的に何をしたときにどうしたいのかということをしっかりイメージさせることと, フレーム移動のスクリプトをもう少し知ることと, onClipEvent の使い方ももう少し... と言ったところのように思います。 文章から推測して(推測できない部分もありますが), こんな感じでしょうか↓? ---------------------------------------- // このムービークリップが表示されたとき onClipEvent (load) { // 最初のフレームでストップ this.stop(); // 変数 flag を 0 にする flag = 0; } // どれかキーを押したとき onClipEvent (keyDown) { // スペースキー でなおかつ flag が 0 であれば if (Key.getCode() == Key.SPACE && flag == 0) { // 次のフレームへ this.nextFrame(); // flag を 1 にする flag = 1; } } // どれかキーを離したとき onClipEvent (keyUp) { // flag を 0 に戻す flag = 0; } ----------------------------------------  // 次のフレームへ  this.nextFrame(); や,上記スクリプトにはありませんが,  // 前のフレームへ  this.prevFrame(); を使うと簡単です。 しかし,どういう動きをさせたいのか今ひとつわかりません。 わかるのは フレーム7 ではストップするということだけです。 変数 flag を用意したのは, スペースキーを押し続けると,nextFrame(); が連続実行されてしまうからです。 1回押すたびに絶対に1フレーム進めるだけでしたら, 上のような感じになります。 連続実行された方が良い場合は, flag など用意する必要はありませんから次のようになります。 ---------------------------------------- // このムービークリップが表示されたとき onClipEvent (load) { // 最初のフレームでストップ this.stop(); } // どれかキーを押したとき onClipEvent (keyDown) { // スペースキー でであれば if (Key.getCode() == Key.SPACE) { // 次のフレームへ this.nextFrame(); } } ---------------------------------------- すごくシンプルですね。 oopとかif...else if...などは関係ないでしょう。 結局,この2つ目のスクリプトがベースで, もっと何かをする場合は何かを追加すれば良いということになります。 もし, 最初のスクリプトを変更するとして, Shift キー を押したときはバックさせたいのでしたら, 次のようになります。 ---------------------------------------- // このムービークリップが表示されたとき onClipEvent (load) { // 最初のフレームでストップ this.stop(); // 変数 flag を 0 にする flag = 0; } // どれかキーを押したとき onClipEvent (keyDown) { // flag が 0 のときで if (flag == 0) { // スペースキー であれば if (Key.getCode() == Key.SPACE) { // 次のフレームへ this.nextFrame(); // シフトキー であれば } else if (Key.getCode() == Key.SHIFT) { // 前のフレームへ this.prevFrame(); } // flag を 1 にする flag = 1; } } // どれかキーを離したとき onClipEvent (keyUp) { // flag を 0 に戻す flag = 0; } ---------------------------------------- こんな感じになると, else if が出てきます。 しかし,文法とかそういう問題より, 「何をしたときどう動かしたいのか」を明確にしてください。 それをスクリプト文章にするだけで, 「何をしたときどう動かしたいのか」が明確でなければ, スクリプト文は書けません。

myuko1222
質問者

お礼

sassakun様 ご丁寧なご回答ありがとうございました。 私のしたいことが言葉で明確に伝えられずすみません。 でも、ひとつめのコードをコピペして貼りましたら 思っていたとおりに動きました。 本当に助かりました!!

関連するQ&A