FLASH5で連続で2回ボタンを押した場合の動作について

このQ&Aのポイント
  • FLASH5で連続で2回ボタンを押した場合に意図した通りの動きをする方法を教えてください。
  • Aのボタンの1度目のロールオーバーは問題なく動作しますが、連続で2回やると意図した通りの動きになりません。
  • 連続で2回やっても意図した通りの動作をさせるためにはどのようにすれば良いでしょうか?
回答を見る
  • ベストアンサー

FLASH5で以下のようなことをする場合に。

[1]~[17][18][19][20][21][22][23][24][25][26][27][28][29][30] B     ●a A   ● 上記のようなflaファイルがあります。 AはボタンでBはムービーです。 Aのボタンには以下のようなアクションスクリプトが設定されています。 -------------------- on(rollOut){ this.gotoAndPlay(18); } -------------------- Bの18フレームには以下のようなアクションスクリプトが設定されています。 -------------------- this.stop(); -------------------- Aのボタンの1度目のロールオーバーはきちんと意図した通りに動くのですが、 連続で2回やった時に意図した動きになりません。 時間を置いて再びやったり、違うボタンを触ってからやればきちんと動きます。 連続で2回やってもきちんと意図した通りの動きをさせるためにはどのようにすればいいのでしょうか?

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

  • ベストアンサー
  • kosa
  • ベストアンサー率25% (379/1464)
回答No.8

[1]~[17][18][19][20][21][22][23][24][25][26][27][28][29][30] B     ● A   ● ではなくて [1]~[17][18][19][20][21][22][23][24][25][26][27][28][29][30] B● A● の用同じ1フレーム目にして下さい

KODAMAR
質問者

お礼

同じフレームにおいたら無事できました! ありがとうございました! これから細かいところを直していきたいと思います。 本当にたくさんおつきあいいただきありがとうございました!!

その他の回答 (7)

  • kosa
  • ベストアンサー率25% (379/1464)
回答No.7

ボタンAのスクリプト on(rollOut){ //ロールアウト _root.B.gotoAndPlay(0); } ↑ _root.B.gotoAndPlay(0); ではなくて _root.B.gotoAndPlay(1); ですね 怪しい点はBのMCのインスタンス名ですね Bではなく半角英数の小文字のbにして見てください

KODAMAR
質問者

お礼

そうですか…残念です。 FLASHってバージョンでそんなに互換性がないんですね… ボタンA ---------- on(rollOut){ //ロールアウト _root.b.gotoAndPlay(1); } ---------- ムービーBインスタンス名を「b」 に変更してみましたがダメでした…。

KODAMAR
質問者

補足

ボタンAの17フレーム目に this.stop(); が入っているのですがこれが原因とかでしょうか??

  • kosa
  • ベストアンサー率25% (379/1464)
回答No.6

MC:ムービークリップ >ムービーBのインスタンス名を「B」にする。 これはMC自体に付けます。フレームにはつけません >_root.B.gotoAndPlay(0); ここで指定しているフレーム番号はBのMCの中のことを意味しています。 つまりBのMCの中には2つのムービーが存在することになります。 [BのMCの中] 制御  〇 オーバ用 ●-------------●a アウト用           ●----------●a 〇---いきなりスタートしないようにストップする命令 ●a---ムービの終了のためストップ命令 [カレントのフレーム] 制 御 〇 ボタン ● BのMC● 〇---いきなりスタートしないようにストップする命令

KODAMAR
質問者

お礼

[1]~[17][18][19][20][21][22][23][24][25][26][27][28][29][30] B     ● A   ● ボタンAのスクリプト on(rollOut){ //ロールアウト _root.B.gotoAndPlay(0); } ムービーB [1][2][3][4][5] ●     ●a a:this.stop(); であっているのでしょうか? 正常に動かないのですが…。

  • kosa
  • ベストアンサー率25% (379/1464)
回答No.5

よくよく考えるともっと簡単にできそうですね ※Bのムービーのインスタンス名を「b」としてます。 [Aボタン] on (rollOver) {  //ロールオーバー時に表示するBムービーの開始フレーム  _root.b.gotoAndPlay(2); } on (rollOut) {  //ロールアウト時に表示するBムービーの開始フレーム  _root.b.gotoAndPlay(24); } [ BのムービーMC ] 0フレーム---stop(); 2フレーム---ロールオーバー時 ムービースタート 10フレーム---stop();        ロールオーバー時 ムービーストップ 24フレーム---ロールアウト時 ムービースタート 30フレーム---stop();        ロールアウト時 ムービーストップ こんな感じでどうでしょうか? ボタンの方でオーバした時アウトした時にことなる再生フレーム番号で再生しています

KODAMAR
質問者

お礼

とりいそぎということで以下のようにしてみました。 (シーンのフレーム設定はそのままです。) ムービーBのインスタンス名を「B」にする。 (この場合はフレームにつけるのでしょうか?それともムービー自体から指定してつけるのでしょうか? 今回は両方「B」にしてみました。) ボタンAに以下のアクションスクリプトを指定 -------------------- on(rollOut){ //ロールアウト _root.B.gotoAndPlay(0); } -------------------- しかし何も起こりません…。 _root.B.gotoAndPlay(0); で指定した0というのはシーン上でのインスタンスBの0フレーム目ということでしょうか? それともムービーBの0フレーム目ということなのでしょうか? すいませんがよろしくお願いします。

  • kosa
  • ベストアンサー率25% (379/1464)
回答No.4

アクションスクリプトを使うことで単純化してみてはどうでしょうか? 例えばAのボタンをスイッチのように考えてみてはどうでしょうか? 変数xを利用して ロールオーバーした時 x=1 ロールアウトした時に x=0 とします。 BのMCの方に下記のように判定しては? onClipEvent (enterFrame) { if(x==1){ //ロールオーバーした時に再生するフレーム番号 this.gotoAndPlay(18); } if(x==0){ //ロールアウトした時に再生するフレーム番号 this.gotoAndPlay(18); } } BのMCの中の1フレームにしょっぱちに稼動しないように this.stop(); ちょっと荒い説明になりましたがどうでしょうか?

KODAMAR
質問者

お礼

回答ありがとうございます。 ActionScriptで変数を使うのは初めてですので、わからないことが多いのですがやってみようと思います。 早速ですが… ボタンAにはどのように記述すればいいのでしょうか? on(rollOut){  x==0; } のようにすればいいのでしょうか? Bの18フレーム目には onClipEvent(enterFrame){ if(x==0){ this.gotoAndPlay(18); } this.stop(); のようにしてみました。 ですが動きませんでした。。。 記述が逆でしょうか? 修正お願いします。

  • kosa
  • ベストアンサー率25% (379/1464)
回答No.3

う~ん すごくややこしいことをしている気がしますね 結局やりたいことは Aのボタンのロールオーバ時とロールアウト時にそれぞれことなるムービーBが再生すればいいのですよね? ↑ また間違っています?

KODAMAR
質問者

お礼

はい、そんな感じです。 ロールオーバー時はボタンに、ロールアウト時はフレームに、という感じという違いだけです。 >う~ん すごくややこしいことをしている気がしますね 確かにそうですね。 何か他にいい方法はあるでしょうか?

  • kosa
  • ベストアンサー率25% (379/1464)
回答No.2

あら私は勘違いしていました・・・すまそん AのボタンでBのムービーをコントロールしたいってことですよね? >連続で2回やった時に意図した動きになりません。 ですからロールオーバーとロールアウトの2つが必要なのではないですか? この場合はロールアウトしか定義してませんよね? またまた誤解認識してたらごめんなさい

KODAMAR
質問者

お礼

[1][2][3][4]~[17][18][19][20][21][22][23][24][25][26][27][28][29][30] B            ●a A    ●   ●                        ● AはボタンでBはムービーです。 A -------------------- on(rollOut){ this.gotoAndPlay(18); } -------------------- B -------------------- this.stop(); -------------------- Aのボタンの「オーバー」にはムービーが設定されています。 ですが、ボタンではロールアウト時のムービーって指定できませんよね。 ムービーがカットアウトになっちゃうのでなんとかムービーを指定しようとして、 フレームを指定して飛ばすことを思いついたわけです。 最初はロールオーバー時のムービーもシーン上に作成していたのですが、 フレーム数が多くなってしまったので、ボタンに貼り付けました。 Bのムービーにはボタンのロールアウト時のムービーが入っています。 それでロールアウト時のみフレーム指定して飛ばすようにしたんですが、 指定ムービーと同じフレーム(この場合18フレーム目)で再度ロールアウトすると、 19フレーム目に飛んでしまうんです。 これをなんとか回避したいと思っています。 下手な説明ですがおわかりいただけたでしょうか? よろしくお願いします。

  • kosa
  • ベストアンサー率25% (379/1464)
回答No.1

on(rollOut){ this.gotoAndSTOP(18); } にすればどうでしょうか

KODAMAR
質問者

お礼

回答ありがとうございます。 [1]~[17][18][19][20][21][22][23][24][25][26][27][28][29][30] B     ●a A   ● Aのボタン -------------------- on(rollOut){ this.gotoAndStop(18); } -------------------- Bの18フレーム -------------------- this.stop(); -------------------- としてみましたが、どうも2回目(18フレーム目)がうまく動作しません。 (Bのムービーが出ない) どうしたらいいでしょうか?

関連するQ&A

  • FLASHのボタンの動作(他のボタンにロールオーバーしたら…)

    AというボタンとBというボタンがあります。 Aには on (rollover) { this.gotoAndPlay(2); } on(rollout){ this.gotoandplay(6); } というアクションがついていますが、 「rollout」ではなくて、「Bのボタンにrolloverしたら」というように変えたいのですが、 どのように記述したらよろしいでしょうか? よろしくお願いします。

  • Flash CS4でリンクボタンを作成中です。

    Flash CS4でリンクボタンを作成中です。 初心者で、スクリプトの意味がまだ良く分かっておらず、参考書記載の通りにアクションを書いたのですが、「コンパイルエラー」が表示され、指定したページへリンクされません。 アクションスプリクト及びコンパイルエラーは以下の通りです。 どこが悪いのか全然分かりません。どなたか至急ご教授宜しくお願いします。 ★アクションスクリプト 1  on (rollOver) { 2  this.gotoAndPlay("ON"); 3  } 4 5  on (rollOut) { 6  this.gotoAndPlay("OFF"); 7  } 8 9  on (release) { 10 getURL("http://www.~/"); 11 } ★コンパイルエラー 1087 シンタックスエラー(プログラムの末尾の後に余分な文字が見つかりました。) on (rollOver) { 以上、宜しくお願いします。

    • ベストアンサー
    • Flash
  • Flashでボタンをつくっているのですが、actionscriptをつ

    Flashでボタンをつくっているのですが、actionscriptをつかってボタンをクリックさせたいのですが、アクションパネルのところに「現在の選択範囲にアクションを割り当てることはできません。」と表示されてしまいます。 参考書に附属されているflaをみたところ、Actionscript1.0、2.0となっているのですが、作成しているのはActionscript3.0で作っています。 ====== on (release) { /*↑ボタンが押されて離されたら*/ _parent.gotoAndPlay("about"); /*↑「about」ラベルへ移動*/ } ====== このようなscriptをいれたいのですが、うまくいきません。 ムービークリップでボタンを作るまではできました。その後、何かが抜けているのかして上記のようなエラーがでます。 flash初心者のため、どういう風に書いて質問させていただいたらよいのかわからないのですが、参考flaと見比べたときに「シンボル定義」のなかにあるムービークリップがひとつたりませんでした。(このムービークリップは「navigation」というものですのでそれがありません。) 質問するにはあまりにも情報が少ないかもわかりませんが、何卒ご教授いただけると大変助かります。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • FLASH での基本的なアクションについて教えてください

    ご教授お願いします。 Flash CS3を使用しております。 1フレーム目で停止し、そこで表示されているボタン(b1というインスタンス名)をクリックすると2フレーム以降が再生されるファイルを 作成しようとしていますが、うまくアクションさせることができません。ボタンはちゃんと機能していると思います。 現在、私が1フレーム目に入力しているアクションは下記のとおりです。 this.stop() function gotoAndPlay(2); b1.addEventListener(MouseEvent.CLICK,gotoAndPlay); どのあたりが不適切なのでしょうか? 以前にFlash5を使用したことがあり、その際はボタンへのアクションも選択するだけで簡単にできたのですが、CS3はやはり高機能だけにやや難解です。 詳しい方には、あまりに基本的な質問かもしれませんが 格闘すること数時間、先に進まず困っております。 どなたかご教授いただけますと、大変ありがたいのですが・・・。

  • 異なるPC 間で、flashの連携がしたい

    異なるPC 間で、flash同士の連携がしたいです。 (Action script 2.0・FlashCS3/必要になるとおもい、ルータ、LANケーブルは用意しました。) A.flaで、座標A が押されたら、 B.flaで、座標A に対応する、アイコンが表示される。 同様に、座標Bが押されたら、アイコンが表示、というように、A~E まで作りたいです。 B.flaのアイコン(識別子 symPoinyt)は、B.fla用のXMLで指定した座標をもとに、 mc背景(インスタンス map)にアタッチしています。 このアイコンを、最初は見えなくしておいて、 A.flaで座標Aが押されたら、B.flaの指定の場所にアイコンを表示するようにすればいい のかなと予測はしているのですが、 具体的に、どのようなスクリプトを書けばよいかわからず、悶々と悩んでいます。。。 お手数おかけしますが、教えて頂けませんでしょうか。 宜しくお願い致します。 今、じぶんが書いているコードを以下のURLにのせます。 ・A.fla http://haohao0000.web.fc2.com/newpage1.htm ・B.fla http://haohao0000.web.fc2.com/newpage2.htm

  • suzukaのスクリプトで

    suzukaでFlashを制作しております。 プログラムはさっぱりなので検索して出てきたactionscriptを切り貼りして試している状況です。 その1.フレームアクションにおいて、キーを押したら特定のフレームまで移動するスクリプトを入れたいので20フレーム目に以下のスクリプトを入れたのですが、どちらも使えませんでした。具体的な解決策はありますでしょうか。 ●[parse error]とエラーが出る this.stop(); on(keyPress ("a")){ _root.gotoAndPlay(21); } ●キーを押しても何も起こらない this.stop(); if(Key.isDown(Key.RIGHT)){ _root.gotoAndPlay(21); } else if(Key.isDown(Key.LEFT)){ _root.gotoAndPlay(31); } その2.フレームアクションの10フレーム目に this.stop(); buttonA.onPress=function(){ _root.gotoAndPlay(11); }; とボタンのスクリプトを入れると、 どこのフレームまで移動しようが 同じボタンへの命令で上書きするまで このボタンへの効果が持続されてしまうのですが、 押した瞬間に後に命令を引き継がせないスクリプトの記述はありますか?

    • ベストアンサー
    • Flash
  • このFLASHファイルが動かないわけは…。

              1  2  3  4  5  6  7  8  9  10 a         ●|●                          ※ボタン。「1」にthis stopが入ってます b         ●                             ※ムービー c         ●   |●|●                    ※「3」にthis stop。ボタン d               ●                        ※ムービー。シーン上の名前は「vision」 cのボタンに on(press){ _root.vision.gotoAndPlay(2); } on(press){ this.gotoAndPlay(3); } と入ってます。 dのムービークリップは           1  2  3  4  5  6  7  8  9  10 a         ●|●  > ● のような感じです。 ※「1」にthis stopが入ってます。 cのボタンをクリックしてもdのムービーがきちんと動きません。 どこがダメなのでしょうか?

  • フラッシュでボタンにマウスポイントを当てた時に点滅する方法

    フラッシュを勉強している者です。 ボタンを作成してその上にマウスポイントを置いた時にそのボタンが暗くなったり、明るくなったりという要領で光りを放ち、マウスポイントを放すと元の状態に戻す。という物を作りたいと思いました。 下記の通りソースを書いた所、パブリッシュ時にエラーが表示されてそのままフラッシュ自体が強制終了してしまいます。 on(rollOver){ this.gotoAndPlay(2) } on(rollOut){ this.gotoAndPlay(1) } おそらく考えられる事としてボタン自体をムービー的なタイムランで動かそうとしているからではと思っています。 どうか実現するためのソース例を教えて頂けないでしょうか?お願いします。

  • flash cs3のアクションスクリプトに関する質問です。

    flash cs3のアクションスクリプトに関する質問です。 ActionScript2.0を使っています。 現在ゲームを作っていますが次の場面で分からないことがあります。 3つの項目からそれぞれ1つずつ答えを選んでもらい「決定」のボタンを押すと答えによって次に再生するレイヤーを変えたいのですがうまくいきません。 具体的には 【A】【1】【あ】 【B】【2】【い】 【C】【3】【う】 【決定】 というボタンがあり、例えば【A】【1】【あ】と選んで【決定】を押すと、「レイヤーA」「レイヤー1」「レイヤーあ」が再生されるようにしたいのですが 【A】のボタンのアクションには on (release) {a=1} と書きました 上と同様にほかの【B】は{a=2}、【C】は{a=3}、【1】から【3】の項目については{b=1}のように【あ】の項目についても{c=} 【決定】のボタンのアクションには on (release) { if (a==1) {gotoAndPlay(フレーム1の名前); } ~同様にそれぞれ(a==2)以下が続きます。~ } と書きました。 シンタックスチェックでは間違いは見つかりませんでしたがシーンプレビューでは決定ボタンを押しても反応がありません。 はじめたばかりで何かが足りていないのか、根本的に間違っているのかもわからない状態です。 回答よろしくお願いします。 上記のこと以外で伝えたほうがいいことがありましたら教えてください。

  • FlashMXでタイムラインをとばしたい

    FlashMXのスクリプトで質問です。 ボタンのアクションスクリプトで、ロールアウトするとタイムラインの20フレーム目に戻ってプレイし、40フレーム目まで行ったら、60フレーム目まで飛んで60フレーム目以降をプレイする、 と言うような指定をしたいのです。 on (rollOut) {gotoAndPlay("20");} まではできるのですが、40→60の間をとばす方法が分かりません。 まず最初に0→60を表示させたいので、フレームへのアクション指定は避けたいのです。 またswfファイルも一つにまとめたいのです。 ボタンへのアクション指定で出来る方法が一番いいのですが、良い方法がありましたら教えてください。 よろしくお願いいたします。