• ベストアンサー
  • すぐに回答を!

FLASHでループ再生を制限するAS

  • 質問No.8103639
  • 閲覧数282
  • ありがとう数1
  • 回答数1
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回目までループするように設定したつもりです。
しかし、止まってくれず何度もループしてしまいます。
どのように記述するのが正しいのでしょうか?
ご指導お願い致します。

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

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

ベストアンサー率 72% (45/62)

ActionScriptのバージョンが2.0か3.0か気になるところですが(いまどき2.0ってことは無いかな?)、これくらいならどっちでも同じでしょう。

最後のフレームから
gotoAndPlay(1);
で最初のフレームに戻った時に、
var loop_cntA:Number = 0;
で、カウンタが0にリセットされてしまうため、何回ループしても25にならないためだと思います。

解決法としては、

すべてのフレームを一つ後ろにずらして、先頭に初期化専用のフレームを作り、そこに
var loop_cntA:Number = 0;
で宣言と初期化をして、最後のフレームからは
gotoAndPlay(2);
で、初期化専用フレームの次のフレームに戻る方法。

あるいは、フレームをずらさずに、最初のフレームを
var loop_cntA:Number;
if (isNaN(loop_cntA)) {
loop_cntA = 0;
}
にして、宣言と初期化を分け、初期化されていない時だけ初期化する方法、

などが考えられます。

あと気になったところで、
 Number(loop_cntA)
となっているところがありますが、宣言で
 var loop_cntA:Number
としてあるので、Number()は無くても大丈夫だと思います。
Number()はNumberかどうかわからないものや、NumberではないけれどもNumberに変換可能なものをNumberにするために使います。
お礼コメント
noname#212509
早速ご返答ありがとうございます。ご指摘のとおり3.0です。

1番目のやり方でも、やはりスルーして再生してしまったので、2番目のやり方を使用したところ、指定した回数で止まるようになりました。

本当にありがとうございます!
投稿日時:2013/05/27 02:48
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ