• ベストアンサー

FlashMXでのスクリプトの質問。

FlashMXでのスクリプトの質問です。 1~30フレームまで5回繰り返して、その後31フレームに移り最後の60フレームでストップするというアクションをさせるには、どのようなスクリプトを使えばいいのでしょうか? 30フレーム目に1フレーム目に戻り5回繰り返すというアクション(これが分かりません。)、その後、6回目には31フレームに移り(gotoAndPlay(31);でしょうか?)そのまま最後の60フレームまで進み、60フレーム目で停止(stop();)。 これくらいしか私には分かりません。 どうか知恵をお貸し下さい。 宜しくお願いします。

  • RRHH
  • お礼率62% (34/54)

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

変数を用意して、ループするごとにカウントを取り、その値を元にフレーム 30 で分岐してはいかがでしょう。 フレーム1で、ループした回数を保持する変数を1つ、用意します。ここでは仮に、loop_cnt という名前にします。初期値はとりあえず、1を入れます。 ただ、フレーム1で単純に loop_cnt = 1; とすると、フレーム 30 から戻ってくる度にカウンタがリセットされ、いつまでもループが終了しないことになります。 参照しようとした変数が存在しない場合、undefined という値が返されます。これを利用して、最初の1度だけ、変数を初期化することができます。 スクリプトにしますと、次のようになります。 (↓以下のスクリプトをコピーして利用する場合は、各行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります)  ・フレーム1に設定するスクリプト   //最初の1度だけ、ループカウンタを初期化   if( loop_cnt == undefined )   {    loop_cnt = 1;   } フレーム 30 では、ループカウンタの更新と、再生するフレームの分岐を行います。 if 文の条件は、ループカウンタを if 文の前で更新するか、if 文の中で更新するかによって、5以下か5未満かが変わります。どちらでも結果は同じですので、分かりやすい方で書いて下さい。ここでは、if 文の前で加算することにします。  ・フレーム 30 に設定するスクリプト   //ループカウンタを更新   loop_cnt++;   //フレーム1~30を5回ループ   if( loop_cnt <= 5 )   {    gotoAndPlay( 1 );   } 5回ループした後は if 文の条件が不成立になり、gotoAndPlay( 1 ); は実行されず、再生ヘッドはそのまま先のフレームに進みます。改めて gotoAndPlay( 31 ); を実行する必要はありません。 最後に、フレーム 60 に stop(); を入れて、完成です。 「ムービープレビュー」の「制御」メニューで、巻き戻して再度再生させてみると分かりますが。 最初は問題ないのですが、2回目以降の再生では、フレーム1~ 30 のループは1回しか行われません。 これは、loop_cnt が既に定義されているため、フレーム1での変数の初期化が、2回目以降の再生では実行されないことが原因です。 2回以上再生させる場合や、あるいは、閲覧者の操作によって再生される可能性がある場合( Flash Player のメニューを表示させる場合など)は、ループ終了後に loop_cnt の値を1に戻しておきましょう。 細かい話ですけれど、閲覧者は制作者が予期しない操作をすることがあります。どんな操作をされても一定の処理ができるよう、できる限り頑丈な設計にしておくことをおすすめします。

RRHH
質問者

お礼

出来ました。有難うございました。 説明が分かりやすくて、とても助かりました。

関連するQ&A

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

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

  • 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
  • FlashMX2004について質問です。

    FlashMX2004について質問です。 ムービー内でボタン押下した際に別シーンor別フレームに移動したいと考えていのですが 実際はボタン押下しても、何もおきません。 (ボタン押下するフレームで、stop()発行しているのが問題?) 文法チェックでもエラーとならないため、原因がわかりません。 どなたか教えてください。 ソースは以下の通り。 on (release) { gotoAndPlay(133) }

    • ベストアンサー
    • Flash
  • FlashMXでバナーを作る際のスクリプト

    みなさま 教えてください! FlashMXでバナーを作っています。 一通り終わって、アクションを埋め込もうと思ったのですが、どのスクリプトか分からなくなってしまいました。 普通にマウスでクリックすると指定したURLに 移動する、というスクリプトはどれでしょうか? ご返答おねがいいたします。

  • flashMX nowloading...

    こんにちわ。今FLASHMXのMOVIEを作ってるんですが。みなさんのサイトの初めにNOWLOADINGと言った画面でMOVIE全体が呼び込まれるまで表示される画面がありますよね?あれようのアクションスクリプトをいろいろさがしてるのですがどれも複雑なのが多くてよくわかりません。。。 自分のFLASH MOVIEは1シーンのみで作られてます。膳5FRAMEでできていますがいろいろMOVIECLIPなどをつかってるのでトータルサイズは900KB近くあります。 NOWLOADINGの画面で900KB全部を読み込んでから10フレーム目に飛ぶと言うアクションスクリプトはどのように書くのでしょうか?教えてください。

  • FlashMX初心者・Action Scriptを勉強したい・いい本は?

    Flash5で「モーショントゥイーン」「アルファ」「シーン」など、少しだけ使えるようになりました。 FlashMXも購入し、本格的にAction Scriptを勉強し、アニメーションを作ってみたいと思っています。 このレベルの人間が、初めてAction Scriptを学ぶのに適した本はありますか。 OSはWindows2000です。

  • paraflaのアクションスクリプトについて。

    paraflaのアクションスクリプトについて。 paraflaで、10枚の画像をループで連続表示して、 一度enterでどれかの画像でstopさせてから さらにもう一度enterでその画像に絡めた機能を呼び起こしたいんですが、 スクリプトの書き方がわかりません。 同じボタンで一回目は停止、二回目に実行という書き方を教えて頂きたいです。 まだflash始めたばかりで。。。難しいですが楽しいですね。 どなたかアドバイスありましたら宜しく願い致します。 ちなみに今こんな感じです。 例えば5枚目の画像の場所に on(keyPress "<Enter>") {実行する内容;} - on(keyPress "<Down>") {gotoAndPlay("3");} これだとenterで停止しないでいきなり実行。。。 Downはループ再開です。 いきなり実行でも良いのですが、 理想は一回停止してその画像を表示させて 違ったらDownでループ再開って感じを目指しています。 なにをどう足せばそうなるのでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • Flashのアクションスクリプトについて質問があります。

    Flashのアクションスクリプトについて質問があります。  FlashのCS2を使って選択式クイズを作っています。タイトルや問題などのフレームにはラベルを付けて、ラベルレイヤーのキーフレームにスタートや選択肢のボタンを配置しました。そして、タイトルラベルにあるスタートボタンを押すと問題1に飛ぶようにアクションスクリプトを設定しました。その後、きちんと設定出来ているか再生して確認してみたところ、問題1から再生されて、タイトルから再生されなくなりました。何回かやり直してみたのですが、タイトルから再生されませんでした。アクションスクリプトの設定は、「タイトルラベルのキーフレームをクリック→スタートボタンが選択されていることを確認→F9を押してアクションスクリプトの設定画面を表示→スクリプトアシストをオンにする→グローバル関数の中にあるgotoをダブルクリック→移動して再生を停止をオンにする→タイプをフレームラベルに変更→フレームのメニューをクリックして問題1を選ぶ」というふうにしました。 なぜ、タイトルからではなくスタートボタンを押さないと表示されない問題1が表示されたのかわかりません。どこで設定を間違えているのか分からないので、わかる方がいらっしゃたら教えていただきたいと思います。お願いします。

  • FlashMXでドキュメントクラス

    いつもお世話になります。 Flashのアクションスクリプトに興味を持って猛勉強中です。 自宅では、FlashCS3を使用できる環境にあります。 職場では、FlashMXしか使用できません。 FlashCS3では、ドキュメントクラスの設定で、外部*.asファイルを書けるのですが、FlashMXでは*.asを指定するということに相当する設定を見つけることができません。 FlashMXではそもそもこのような概念はなのでしょうか。 行いたいことは、 http://www.flashiroha.com/script/textEffect/as27.html です。 FlashCSを用いればそれまでですが、FlashMXで同様なことをと思って挑戦しました。 >textEffect.asファイルに というところで、FlashMXでは、*.asファイルにどのようにして記述をすれば良いものかと調べたあげくわからなくての質問です。 なにとぞよろしくお願いいたします。 FlashMXでは、そもそもこのようなことできないのかとも思いましたが、その理由もよくわかりません。

    • ベストアンサー
    • Flash
  • FlashMXで「goto」の使い方。

    これってグラフィックソフトでいいのかな?ホームページ作成? それはさておき… シーン1にシンボルを1つ置き、ムービークリップにしました。ムービーを再生するため一旦「stop();」させます。 そのムービーを全て再生し終わるとシーン1のフレームラベル「main」に飛ぶようにしたいと考えています。 ムービークリップの最後に「gotoAndPlay("シーン 1", "main");」とするのですが、シーン1に戻ってくれません。(ムービークリップを繰り返し再生するだけ) どうしたら上のシーンに戻ることが出来ますか?