アクションスクリプト3.0でフレームに行くと値が初期化される問題の解決方法

このQ&Aのポイント
  • actionscript3.0で作成したアニメーションのフレーム切り替え時に値が初期化される問題を解決する方法を解説します。
  • この問題は、レイヤーごとにスクリプトを配置しているために起こるものです。
  • 解決方法としては、アニメーションのスクリプトを1つのレイヤーにまとめることで、countの初期化を最初の1回だけに制限することができます。
回答を見る
  • ベストアンサー

フレーム(0)に行くと値が初期化される

お世話になっております。 actionscript3.0 で作成しております。 レイヤーが2つあり、フレームが5個あります。 (1)のレイヤーにアニメーションがあり、 (2)のレイヤーにvar count=1; count=count+1; のスクリプトがあります。 このアニメーションをぐるぐる回したいのですが、 countの値が最初のフレームで毎回初期化されるため、 1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,・・・ となります。 countの初期化を最初の一回だけ走らして、 1,2,3,4,5,6,7,8,9,10,11,・・・ としたいのですが、どのようにすればよいでしょうか? 何卒よろしくお願い致します。

  • Flash
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

フレーム1 に count を 1 にする条件を付ける必要があります。 もし count に int(整数値) という型指定を入れる場合は次のようになります。 -------------------------------- var count:int; if (count==0) { count=1; } -------------------------------- 型指定など入れない場合は次のようになります。 -------------------------------- if (count==undefined) { var count=1; } --------------------------------

その他の回答 (1)

noname#138608
noname#138608
回答No.1

たしか・・・変数はグローバルスコープというか、そんな感じだったと思います。 つまり最初のフレームで初期化を行うハズなんです。 処理を2フレーム移行に記述して、最期のフレームで2フレーム目に戻るようにループさせればよいかと。 1フレーム目は初期化と割り切って2フレーム目にgoto すれば1フレーム目の再生は無いですし。 かな?

関連するQ&A

  • jQuery pngアニメを同ページ内に複数配置

    よろしくお願いいたします。 http://blog.rettuce.com/animation/animation-jpg/ こちらを参考に、jquery+png画像でgifアニメのようなアニメーションを作成しています。 サンプルの通りに作成すると問題なくアニメーションになっているのですが、 同じページ内に複数の異なるアニメーションを配置すると、うまく表示できず、おかしな動作になります。 javascriptは以下のように記述しています。 //アニメーション1 <script type="text/javascript">var id = "test1"; var width = 50; var height = 50; var fps = 10; var src = "test1.png"; var frame = 0; var max_frame = 10; var onceFlg = false; $(document).ready( function (){ $("#"+id).css({ "background":"url("+src+")", "width":width, "height":height }); var interval = 1/fps*1000; animation = setInterval(intervalEvent, interval); }); function intervalEvent(){ $("#"+id).css({ "background-position":"0 "+ -height * frame +"px"}); frame++; if(frame>=max_frame){ if(onceFlg) clearInterval( animation ); frame = 0; }; } </script> //アニメーション2 <script type="text/javascript"> var id2 = "test2"; var width = 500; var height = 300; var fps2 = 5; var src2 = "test2.png"; var frame2 = 0; var max_frame2 = 5; var onceFlg2 = false; $(document).ready(function (){ $("#"+id2).css({ "background":"url("+src2+")", "width":width, "height":height }); var interval2 = 1/fps2*1000; animation2 = setInterval(intervalEvent2, interval2); }); function intervalEvent2(){ $("#"+id2).css({"background-position":"0 "+ -height * frame2 +"px"}); frame2++; if(frame2>=max_frame2){ if(onceFlg2) clearInterval( animation2 ); frame2 = 0; }; } </script> ------- それぞれ、一つずつ記述したときは、どちらも想い通りに動くのですが、 両方記述した際に、以下の2点のようになります。 1.アニメーション1が23×23個表示される  ■ ←これをアニメーションだとすると、 ■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■     ・     ・     ・ という風に表示されます。 2.上記のjavascriptの記述のアニメーション1とアニメーション2の順序を入れ替えると、  アニメーション1は正しく表示され、アニメーション2が表示されなくなります。。 それぞれ個別では動いているので、複数配置するときのjavascriptの書き方が間違っているのかと思うのですが、 原因をもしご存知でしたらお教えいただきたいと思い、質問させていただきました。 どうぞよろしくお願いいたします。

  • 大元のタイムラインの変数を初期化するには?(できれば1シーン1フレーム目で)

    flash 8 basic 試用版で勉強中です。 メインのタイムラインの1シーン1フレーム1行目に var a:Number = 0; があるとします。 1フレームのこれ以降の行や2フレーム以降で a に値を代入します。a をC言語などで言えばグローバル変数のように使用しているイメージです。 2フレーム以降でさまざまな条件を満たしたら(例えばゲームオーバーになったとか)、最初の画面、つまり1フレーム目に gotoAndStop() などで戻るようにしています。この時、1フレーム目に戻っても、a に保持している値は1フレームに戻る前の値を持っていたいのですが、これが出来ません。上に書いた 1行目の行が処理されてa に 0 が入ってしまいます。 これを回避するために、変数定義と初期化の行だけ1フレーム目に書いて、実際に絵などが書いてあり、処理の行が書いてある部分を2フレーム目以降にしています。そして、最初に戻る処理をしたい時、実際には2フレームに戻るという処理にしているのですが、なんかイケてない気がします。 これと同等の内容を通常はどうやってやるのでしょうか。#initclip というのが使えそうかな、と思ったのですが、これは Movieclip にしか使えないとヘルプに書いてあります。メインのタイムラインも Movieclip の親玉みたいなものかなと思ってやってみたのですが駄目でした。 やっぱり1フレーム目に戻る処理をした時点で1フレーム目に書いてあることは全て実行されるのでしょうか。(当たり前といえば当たり前な気もするけど) flash ならではのやり方があるのか、私が簡単なことに気付いていないだけでしょうか。 ゼビウスなどで言えば1フレーム目はタイトルとメニューの画面で、a はハイスコアを持っているのと同等な感じです。まだ1回もゲームをやっていない時は 0 でよいが、1回終わって戻ってきた時はハイスコアなどの値を持っていたいのです。お願いします。

    • ベストアンサー
    • Flash
  • 正6面体を一定の角度で回転させたい

    私は今、FlashMX Professional 2004 ver7.2を使っている者なのですが、ワイヤーフレームでできた正6面体(キューブ)を一定の角度で回転させるアニメーションがActionScriptで作りたいと思っています。 それで、Flash製作に関するHPを色々探して見たのですが、私の調べた限りでは、どのHPも、マウスカーソルに反応して回転の角度が変わるアニメーションのスクリプトしか公開されておりませんでした。 私としては、マウスに反応しないアニメーションを作りたいのですが、いかんせんActionScript初心者なので、上記で見つかったアニメーションのどのスクリプトを修正すればいいか、分からないでいます。 マウスの動きに反応せずに正6面体を回転させるアニメーションの作成方法をご存知の方がいらっしゃいましたら、よろしければそのスクリプトを、もしご面倒なようでしたら、参考になるHPをお教えくだされば幸いに思います。 また、こちらは余裕があればお答え頂くと言う形でよいのですが、こうしたアニメーションを表現するもう一つの手段として、ActionScriptを使わずに、思い切ってフレームアニメーションで回転しているように見せる、と言う方法もあるのですが、こちらの方法では動作が遅くなるほどサイズが重くなってしまうでしょうか? よろしければアドバイス頂けると幸いに思います。

    • ベストアンサー
    • Flash
  • rollover時に、MCを動かしたい。

    ↓のような、flashを作りたいのです。 ttp://www.muratec.jp/index.html (最初にhを入れてください) 左のrolloverボタンはできたのですが、 rollover時に右に段々表示される画像を再生させる、 というactionscriptがよく分からず、動きません・・・。 全部シーン1でやっています。 ・レイヤー1 ボタンシンボル5つほど。 左のボタンを1つずつ分けて作ったものを用意して、 1つずつボタンシンボルで、フレーム1に。 ・レイヤー2からレイヤーレイヤー6 5枚の画像を用意して、MCにシンボル化。 それぞれフレーム1~5フレームに、 アルファ0からアルファ100にいくモーションを作成。 レイヤー7 アクションスクリプト 最初の1フレームと5フレーム目にstop(); ・ボタンシンボル アクション(gazou22_mcは、MC名です) on (rollOver){ this.gazou22_mc.gotoAndPlay(1); } ・MCの方の記述がよくわからず、動きません。。 何か作成方法等に関してなどありましたら、 合わせてアドバイスおねがいします。 よろしくおねがいします。

    • ベストアンサー
    • Flash
  • Flash cs4 ランダム再生

    Flash初心者です。 やりたいことはホームページ上でアニメーションを再生させる際に、複数パターンのアニメーションをページをリロードするたびにランダムに切り替えるということです。 Flashにてアニメーションのタイムラインを複数パターンつくり、ランダム再生をActionScriptで制御するものを作成したいと思います。 アニメーションのタイムラインを作成しムービーシンボルとしたものを複数作成し、それをシーン1のタイムラインにて各フレームに配置して、1フレーム目にActionScriptにてgotoAndStop(ランダムフレームの記述?);とすればいいのかなと思っているのですが、正しいでしょうか? 現状ではアニメーションのムービーシンボルは必要なパターンだけ作成しました。 シーン1のタイムラインに配置まではしたのですが、ActionScriptの記述が素人なものでさっぱりわかりません。 どなたか教えていただけませんか? 自分なりにやってみたのですが、ランダム関数(?)以前にgotoAndStop()すら思うようにいきませんでした。 Flashはcs4を使用しております。ActionScript3.0のプロジェクトにして添付画像のように1フレーム目に gotoAndStop(10); としてみたのですが、パブリッシュしたswf ファイルは真っ白のまま何も動いてくれません。 gotoAndstop(10); としてみたらstopせずにタイムラインを再生しているようで、各アニメーションの最初のフレームだけが切り替わるものになってしまいました。 ともにコンパイルエラー 1180:未定義である可能性が高いメソッドgotoAndstopの呼び出しです といわれます。 ActionScriptが2.0と3.0とどちらがいいのかもわかってない状態ですが、ご教授願います。

    • ベストアンサー
    • Flash
  • Flash フレームを指定してムービークリップ再生

    ActionScript超初心者です。 よろしくお願いします。 ステージ上にボタン「A」「B」「C」を配置、 ボタン脇のスペースにムービークリップを配置、各ボタンで切り替え再生させたいと思っています。 2フレーム目に簡単なアニメーションのムービークリップ「animA」を、 3フレーム目に同様の「animB」4フレーム目に「animC」を配置し、 各ボタンon (release)で各ムービークリップの再生をしたいのですが うまくいきません。 どこにどのようなスクリプトを書けば良いか教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • 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回目までループするように設定したつもりです。 しかし、止まってくれず何度もループしてしまいます。 どのように記述するのが正しいのでしょうか? ご指導お願い致します。

  • delphiで、タイマー関数の中で、変数の初期値を入れ、カウントする場合。

    delphiで、タイマーで関数を作るとします。 正式な呼び名が分からないのですが、いわゆるTimer1Timerこれです。 1秒ごとに、0からカウントする機能をつけたいのですが、変数の型を宣言する所に、変数を入れると、注意されます。 下記の方法だと、変な値が入ります。 関数の中に入れてしまうと、最初に入れた値に、毎回初期化されてしまいます。 こんな事を考慮に入れていない訳がないと思うのですが、当方に知識としてありません。 どうか、よろしくお願いします。 あ、もちろん、グローバル変数や、外部から持ち込むのは、やり方として分かるのですが、それが正統的なやり方ですか? label3に0を入れて、読み取って、1足して、label3に返して・・・の繰り返し、とか。 procedure TForm1.Timer1Timer(Sender: TObject); var  Count : Integer ; begin  Count := Count +1 ;  //Inc(Count,1);  label2.Caption := IntToStr(Count) ; end;

  • フレーム内の履歴の一覧を作成

    フレーム内の履歴の一覧を作成 いつもお世話になっております。 フレーム内で移動したリンクの一覧を作成したいのですが、フレーム内のURLの抽出が分かりません。 下記のように作りましたが、『var url~』のところの記述では、親htmlのURLが表示されます。 これを改善し、さらに飛んだ先(例ではgooの先)のURLをリスト化することは可能でしょうか? フレーム内URLのテキスト表示だけでも分かる方がいらっしゃいましたら、ご回答お願いいたします。 <HTML> <HEAD> <TITLE>test1</TITLE> <SCRIPT TYPE="text/javascript"> <!-- var url = location.href; document.write(url); //--> </SCRIPT> </HEAD> <BODY> <BR> <IFRAME NAME="frameA" SRC="http://www.goo.ne.jp/" WIDTH="300" HEIGHT="300" SCROLLING="OFF"> </IFRAME> </BODY> </HTML>

  • 新しいフレームに移動してきて、値によって任意の画像を表示するには?

    FORM等で値を設定したあと、次のフレームに移動してから、先ほど設定した値に応じた画像を表示したいと思っています。 しかし、初期設定の方法などがわからず、最初から呼び出したい画像を開く方法がわかりません。 なにかよい方法がありましたら、ご教授の程、どうか宜しくお願いします。

専門家に質問してみよう