• 締切済み

ループの回数を指定するには?

現在、Flashでバナーを作っています。3回ループしてからムービーを停止させるにはどうしたらいいのでしょうか? for(1=0; i<3; i++){ ←3回繰り返す gotoAndPlay(1);   ←最初のフレームに戻り再生 } というスクリプトを最後のフレームで指定していますがうまく再生されません。どなたかご存知でしたらお教えください。よろしくお願いします。

みんなの回答

noname#35109
noname#35109
回答No.3

No.2さんの言われるのが正当な方法だと思います。 でもややこしければ(ややこしくはないけど) もっと簡単に考えてもできます。 最後のフレームに次のように書く。 これだけ↓ (変数名はNo.2さんと同じくloop_cntを使わせていただきます。何でも良いのですが。) loop_cnt = Number(loop_cnt)+1; if (Number(loop_cnt)<3) { gotoAndPlay(1); } else { stop(); } 本当は,変数の初期化などすべきだと思いますが, しなくても,変数の初期値は"空白"。 数としては0と扱われます。 少なくとも無限ループには落ち込みませんが,たしかに頑丈じゃないですね。

全文を見る
すると、全ての回答が全文表示されます。
  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

for 文は1つのフレーム内で繰り返し処理をしたい場合に使います。フレーム間をまたいだループには使えません。 フレーム間をループするには、変数を用意して、ループするごとにカウントを取ります。最後のフレームではその値を見て、ループを継続するか、停止するかの分岐を行うようにします。 フレーム1に、ループした回数を保持する変数を1つ、用意します。ここでは仮に、loop_cnt という変数だとします。 単に loop_cnt = 1; と書くと、ループしてフレーム1に戻ってきた時にループの回数がリセットされて、いつまでもループが終わらなくなってしまいます。 参照しようとした変数が存在しない場合は、undefined という値が返されます。この点を利用して、変数を最初の1度だけ初期化できます。 フレーム1には、次のようなスクリプトを書きます。 (以下のスクリプトをコピーして利用する場合は、各行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります)  //最初の1度だけ、ループカウンタを初期化  if( loop_cnt == undefined )  {   loop_cnt = 1;  } 最後のフレームでは、ループカウンタの更新と、ループを継続するかしないかの分岐を行います。 スクリプトにしますと、次のようになります。  //ループカウンタを更新  loop_cnt++;  //3回ループした場合は停止  if( loop_cnt > 3 )  {   loop_cnt = 1;   stop();  }  //それ以外はループを継続  else  {   gotoAndPlay( 1 );  } 「ムービープレビュー」の「制御」メニューで、巻き戻して再生しなおしてみると分かりますが。 最初は上手くいっても、2回目以降の再生では、ループは最初の1度しか行われません。 これは、変数 loop_cnt が既に定義されているので、フレーム1でのループカウンタの初期化が、2回目以降の再生では実行されないことが原因です。 バナーではあまりないかとは思いますが、右クリック( Mac では control +クリック)した時の Flash Player のメニューを表示する場合などは、閲覧者の操作で何度も再生される可能性も、ないとは言い切れません。 頑丈なプログラムにするためにも、ループ終了時にループカウンタを1に戻しておくことをおすすめします。

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

Flashはさわったことないですけど、forを書く位置がおかしいと思いますよ。 プログラム全体をforで囲いなおせばうまくいきませんか?

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

関連するQ&A

  • ループを抜けて指定したフレームへ行きたい

    大学の課題で簡単なFLASHゲームを作っているのですが アクションスクリプトの書き方で質問させてください。 最初の画面のスタートボタンを押したら、フレーム50からあるOPムービー的なものへ行き再生したいのですが うまくいきません。 最初のページには森の絵があり、枝が揺れているので 枝を揺らすために 別にアクションスクリプトを記述するだけのレイヤーをつくり this.gotoAndPlay(19) と書いてします。 この事で、全てのレイヤーが19~40をループしているようです。 スタートボタン(ボタンで作りました)を押す事で、 このループを抜けて、50フレームに行くのはどうしたらいいでしょうか 昨夜から本やサイトを見ているのですがどうにも失敗します on(press)関係をボタンをつけたレイヤーに書くとthis.gotoAndPlay(19)がきかず全て再生されてしまいます。 いまいちFLASHが理解できておらず、質問内容もガタガタですが 何とぞ宜しくお願いいたします。

  • トゥイーンの回数を指定する方法について

    こんにちは。 さっそくですが質問です。 携帯用フラッシュ(Flash lite1.1使用) 画面右側から岩が画面左に転がるトゥイーンをつくって それを5回繰り返したいと思い、スクリプトを for(i = 0; i < 5; i++){ gotoAndPlay("game") } という風に書いたところずっとループしてしまいます。 回数が終了したらとまるようにしたくて、この後にstop();と 書いたら、トゥイーンが一回で止まってしまいました。。 指定した回数だけ回して止めるにはどのようなスクリプトに すればいいのでしょうか? よろしくお願いします。。 ちなみに ”game”というのはトゥイーンのラベル名です。

    • ベストアンサー
    • Flash
  • ループ再生させたい

    単純に、最後のフレームに来たらまた最初のフレームに戻って えんえんとループさせたいのです。 最後のフレームにアクションで「gotoAndPlay(1);」でいいと思っていたのですがループしません。 バージョンはCS3です。 それと、CS3になってからActionScript3.0になったらしいですが、どう変わったのでしょう? 新規書類で2.0にするか3.0にするか選べるのですがどちらにしたらいいのかも分かりません。 アクションはせいぜいgotoAndPlayやGetURLぐらいしか使えないのですがその場合でも3.0の方がいいのでしょうか?

  • 2回ループさせるアクションスクリプトについて

    教えてください! flashをあまりつかったことがないのですが、事情でflashを使ったバナーを作っています。2回ループさせて停止にしたいのですが、どんなアクションスクリプトを書けばいいのでしょうか? ネット上で調べてみたのですが上手く探せません。 宜しくお願いします!

  • ActionScript■指定回数でループを止めるには

    全てActionScriptだけで、動作させています。 ・Loadされたら、MCの移動量を定義 ・フレームに入ったら、ブラウザの縦横サイズを設定   {毎フレームごとに移動量を座標に足す     {もしMCが右端+100の位置に来たら、      (MCを左端-100に戻す) } 上記の{ }部を3回繰り返したら停止する、というものを作成したいのですが。 for文を入れて+Stop();を最後に記載したのですが、ダメでした。 回数を指定しないと、ちゃんと動作しますが当然ながら無限に動きます。 すみません、どなたかご教示頂けませんでしょうか。 どうぞよろしくお願いします。 ※当方Flash8にて制作しております。

    • ベストアンサー
    • Flash
  • FLASHでループ再生を制限するAS

    Flashで音楽に合わせループ再生するアニメーションを作っています。 Web等で調べたActionScriptを使い音楽に合わせた回数で止まるように入力したつもりですが、止まらず、またループ再生してしまいます。 どのような記述をすればよろしいのでしょうか? 複数のレイヤーがあるので、1フレーム目に var loop_cntA:Number = 0; とloop_cntAと変数を宣言して、 最後のフレームに loop_cntA = Number(loop_cntA)+1; if (Number(loop_cntA)<25) { gotoAndPlay(1); } else { stop(); } と入力し24回目までループするように設定したつもりです。 しかし、止まってくれず何度もループしてしまいます。 どのように記述するのが正しいのでしょうか? ご指導お願い致します。

  • FLASHでボタンを押すと、FLASHムービーが再生から停止までいくようにしたいです。

    FLASHの初心者です。 以下の物が作りたくてチャレンジをしております。 構成的には、一個の画面と、一個のボタンがあり、 あらかじめFLASHムービーを何個か作り、 一個のFLASHファイルに読み込んで、 ボタンを押すと一個目のムービーが再生、最終フレームで停止、 もう一回ボタンを押すと次のムービーが再生、最後… という具合にしていきたいです。 おそらくアクションスクリプトを使用して作らなければならないと 思うのですが、うまくできないのです… ついでにもう一つ、お聞きしたいことがあります。 フレーム数を右下に常に表示させたいです。 この方法も教えて欲しいです。 使用ソフトはFLASH CS3で、アクションスクリプトは3.0を使っています。 説明下手ですみません… よければ誰か助けてください>△<

  • 最後のフレームで数秒止めてループ再生したい

    FlashMXを使用しています。 ループ再生するFlashを作ったのですが、 最後のフレームで数秒止めてループ再生するには どうしたらいいのでしょうか?

    • ベストアンサー
    • Flash
  • ロールオーバー時、特定区間だけループさせる

    初めて質問させて頂きます。 プログラミング超初心者です。 長年、プログラミングをされてる方には簡単なことだと思いますが、よろしくお願いします。 今、FLASH(CS4)で簡単なアニメーションを作っています。 簡単に説明しますと ・全体で300フレームある ・ボタン3個設置 という状態です。 そして、 1つ目のボタンをロールオーバーしている時は1フレーム目から100フレーム目までをループする。 2つ目のボタンをロールオーバーしている時は101フレーム目から200フレーム目までをループする。 3つ目のボタンをロールオーバーしている時は201フレーム目から300フレーム目までをループする。 ロールアウトすると全体が再生される。 という仕組みを実現させたいのですが、ロールオーバーしたら指定のフレームへ飛ぶというところまでのスクリプトは書けたのですが、ループさせるスクリプトがわからず困っています。 どなたかアドバイスを頂けないでしょうか。

    • ベストアンサー
    • Flash
  • ムービークリップのインスタンス名を変数で扱う

    Flash初心者で、レベルの低い質問だとは思いますが申し訳ありません。単純なシンタックスに関する質問です。 Panel.Panel0Cont ~ Panel.Panel10Cont という11個のムービークリップがあります。 それぞれのムービークリップを一挙に指定のフレームへgotoAndPlayさせる際に、ムービークリップの名前を変数で代入してforループで回したいのですが、変数への代入の仕方が解りません。例えば、 for (i=0; i>10; i++) { var mc:MovieClip = "Panel.Panel"+i+"Cont"; mc.gotoAndPlay(JumpNum); } mcはムービークリップですから、単純な文字列を代入しても当然タイプエラーになってしまいます。ムービークリップのインスタンス名のプロパティに、文字列を変数を使って代入するやり方があるのだと思います。 そのやり方をご教示頂けませんか。 ※参考書を2冊ひっくりかえしてもにわかには見つかりませんでした。

    • ベストアンサー
    • Flash