• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ムービーの指定フレームでの停止方法について)

ムービーの指定フレームでの停止方法について

このQ&Aのポイント
  • ムービーの指定フレームでの停止方法がわからない
  • 指定のフレームでの停止がうまくいかない
  • 浮き上がる泡のアニメーションを止めたい

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

  • ベストアンサー
noname#35109
noname#35109
回答No.2

#1です。 >> 泡を止める+消す(単純に消すだけでも同じかもしれませんが) >> というものにしたかったのです。 そうですよね。 止めたは良いけど,止めてどうするんだろう? と思っていました。 単純に消すだけでも同じだと思うので消すスクリプトを書いておきます。 ------------------------------- //stop(); bubble._visible = false; for (i=0; i<30; i++) { removeMovieClip("bubble"+i); } ------------------------------- となります。止めるよりずっと簡単です。 1行目の //stop(); は#1で書いたのと同じ理由でつけてあります。場合によっては // を取ってください。 対象を「12-13a.fla」の1つにしてくれると,説明もしやすいので,これについて解説しておきます。 上のをコピペするだけでも使えるので以下は無視してくださってもかまいません。 = = = = = = = = = = = = = = = = = = = = = = = = #1で書いたとおり, これは1つの bubble というインスタンス名の泡があって,この中に,自分自身を任意の位置に移動させ,任意の大きさにし,上方向に動かすスクリプトが書いてあります。 止める場合は,ここの記述を理解して,どこを突けば止まるかを考えなければなりませんが, 消す場合は,ここの記述はまったく関係ありません。単に消せば良いだけになります。 ポイントは,このムービーのタイムラインの1フレーム目のスクリプト ------------------------------- for (var i = 0; i<30; i++) {   bubble.duplicateMovieClip("bubble"+i, i); } ------------------------------- です。ここに注釈を入れると以下のようになります。 ------------------------------- //変数 i の初期値は0で,i を1ずつ加算し,29まで以下をループ for (var i = 0; i<30; i++) {   //bubbleを深度 i に,"bubble"+i というインスタンス名で複製    bubble.duplicateMovieClip("bubble"+i, i); } ------------------------------- という感じになります。 ポイントは,duplicateMovieClip です。 これは,ムービークリップを複製するスクリプトで,これの逆が, removeMovieClip ムービークリップを消すスクリプトです。 duplicateMovieClip(複製) と removeMovieClip(消去) は対のようなものなので覚えておいた方が良いと思います。 とくに removeMovieClip(消去) をネットで検索したり,本で調べると,かならず,duplicateMovieClip(複製)に関する事項が書いてあると思います。 duplicateMovieClip(複製)で作成されたものは,removeMovieClip(消去)で消せるのです。 でも,removeMovieClip(消去) は,普通 duplicateMovieClip(複製) されたムービークリップしか消せません 。 本当はそうではなくて, duplicateMovieClip("bubble"+i, i); の最後の i が絡んでいます。 この i は深度で,深度が0以上のムービークリップでないと消せないのです。 深度とはレイヤーのことです。深度の数が大きいほど上のレイヤー,つまり手前に表示されるレイヤーになります。 タイムラインで見えているレイヤーは深度が-1以下です。 i には 0~29までが入ります。0以上の数ですから,それより上のレイヤー0~29に泡を複製しています。 この,タイムラインのレイヤーでは作ることのできないさらに上のレイヤーに複製したものだけが消せるのです。 この回答の最初に書いた, removeMovieClip("bubble"+i); では,duplicateMovieClipで複製された深度0~29のムービークリップを消しています。 でも,これでは最初の複製元のbubble自体が消せないので, bubble._visible = false; でbubbleを消しています。正確には消しているのではなくて「_visible = false;」非表示にしてあります。 「_visible = false;」も覚えておいた方が良いです。なかなか便利です。消したい物を消せるので。 また逆に「_visible = true;」で非表示が表示になります。

mune727
質問者

お礼

大変わかりやすい説明で、すんなりと泡達を消すことができました。 ひとつひとう丁寧に教えていただきましてありがとうございます。 自分もスキルを磨いて、どこかからか持ってきたスクリプトではなく、自分で色々と記述できるように努力していきます。

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

その他の回答 (1)

noname#35109
noname#35109
回答No.1

圧縮ファイルを解凍すると 「12-13.fla」と「12-13a.fla」の2つができますよね。 この2つは似ていますが,泡の出るしくみが少し違うので,止める方法も若干違います。 2つとも,フレームを使った動きではなく, ActionScriptで動かしているので,当然, stop(); では止まりません。 stop(); はフレームを止めるときに使うものです。 ●「12-13.fla」 これは19個の泡のムービークリップのインスタンスからできています。 それぞれのインスタンスにはインスタンス名が付いていないので,外部から命令しにくいです。 とりあえず19個に名前を付けましょう。 例えば一番左の泡を選択して,下のプロパティパネルの <インスタンス名> となっているところに名前を付けてください。 とりあえず awa1 と付けることにします。その横や上やを選択して同じ要領で, awa2 awa3 awa4 …… awa19 と付けてください。 そして,止めたいフレームのフレームアクションとして, ------------------------------------ for (i=1; i<=19; i++) { eval("awa"+i).onEnterFrame = null; } ------------------------------------ と書いてください。 そのフレームで泡の動きは止まります。 泡は this.onEnterFrame = function() { ~~ ~~ というスクリプトで動いています。 上記スクリプトはこのonEnterFrameを一斉に止めるスクリプトです。 ●「12-13a.fla」 これは, bubble というインスタンス名が付いた泡が真ん中に1つあるだけで, この中に動くスクリプトが書いてあります。 この動くムービークリップをタイムラインのスクリプトでコピーして大量発生させています。 これは,止めたいフレームのフレームアクションとして, ------------------------------------ //stop(); bubble.bouyancy = 0; for (i=0; i<30; i++) { eval("bubble"+i).bouyancy = 0; } ------------------------------------ と書いてください。 最初の行に,//stop(); と書いていますが場合によってはなくても良いですし, 場合によっては, // を消して, stop(); にしてください。 この stop(); は泡の動きを止めるための stop(); ではなく,ムービーがループ再生をしてしまうのを防ぐための stop(); です。 せっかく泡の動きを止めても,1フレームに戻るとまた複製されて動き出すからどこかで必要です。 泡を止めたあとも,アニメーションが続く場合は //stop(); を取ってください。でないとその後アニメーションが進まなくなります。いつかどこかで,stop(); を書いて,ムービーのループ再生を避ければ良いです。 上の2つは,スクリプトの急所を狙って,スクリプトを止めています。 他の方が作られたサンプルなどを利用する場合は,なるべくそのスクリプトを理解した上で使ってください。理解できないうちはなるべく使わない方が良いです。 思いもしない所で暴走したり,制御できなくなったりしますし,いつまでたっても他の方が作られた物でしかFlashをつくれないようになってしまいます。

mune727
質問者

お礼

早速の回答ありがとうございます。 上記の「12-13a.fla」で作業をしていたのですが、泡の動きは止めることができました。 しかし、自分の言葉が足りず、泡を止める+消す(単純に消すだけでも同じかもしれませんが)というものにしたかったのです。 二度手間になって申し訳ありませんが、消す方法もあるのでしょうか?

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

関連するQ&A

  • 一定時間停止後フレーム移動

    初心者ですがよろしくお願いします。 ActionScript3.0にて 一定時間後に任意のフレームまで戻るを実行したいのですが 一定時間止まらずにフレームまで戻ってしまいます。 下記の記述は間違ってますか? 一定時間停止の記述法は色々あるみたいですが いくつかやってみたところエラーばっか出て動きませんでした。 この記述だとちゃんと停止するのですが gotoAndPlay(10); を付けると停止しません。 this.stop(); this.iid = setInterval (function (m) { m.play (); clearInterval (m.iid); }, 3000, this); gotoAndPlay(10);

    • ベストアンサー
    • 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
  • 画像をランダムで表示させて一定時間停止させたい

    FlashCS4でAS3.0を使用しております。 添付画像のように「画像レイヤー」には10フレーム毎に画像を入れてあります。50フレームですので5画像を入れてあります。「ラベルレイヤー」には、先の画像におのおのにラベルを付けてます。「ASレイヤー」には各画像を一時的に停めておくためのスクリプト「stop();」を記述してあります。(10、20、30、40、50フレーム) このままですと、ムービーをプレビューした場合には(10フレームの)1枚目の画像が表示されて停止している状態になります。そこで、エンターキーを押すと2枚目の画像が表示されて停止…さらにエンターキーを押すと…3枚目の画像が表示されて停止…順番どおりの表示後停止となります。このムービーをプレビューした際に、画像がタイムラインの順番に関係なくランダムで表示されて、しかも一定時間停止(例えば10秒間)させた後、再びランダムで表示…10秒間停止後に三度ランダム…と言うようにエンドレスでランダムで表示させて10秒間停止後に、またランダム…のようにしたいのですが、1フレームのスクリプトの記述内容をご指導・ご指示願います。よろしくお願い致します。

    • ベストアンサー
    • Flash
  • ムービークリップの止め方

    ActionScriptでわからない部分があるので質問させていただきます。 ↓状況説明 1フレーム目にActionScriptで、ムービークリップが画面上をひたすら動き回る設定をします。 それとは別に背景などはフレーム単位で動かしています。 その後、100フレームになったらムービークリップのみ止めて(消して)、背景のみ動かして200フレームまで続行したいのです。 しかし、stopだと背景が止まってしまい、止めたいはずのムービークリップは動いたままの状態になってしまいます。 この場合は、どの部分にどんな命令を入れれば止める(消す)事が出きるのですか? お手数ですが、どうぞよろしくお願い致します。

  • ムービークリップの制御

    ムービークリップの制御に関してですが・・ 組み込んだムービークリップを、メインフレームから制御したいと思っています。 任意の位置で停止させたいのですが、gotoandstopでは、そのフレームまでジャンプしてしまいます。 「任意のフレームまで再生する」、といった制御はできないでしょうか? mc内に、if文にてstopを組み込む方法では、一回目の再生で停止せず、二回目の再生で止まる・・といった現象に悩んでいる為、メインフレームから停止フレームが指定できるような制御があればいいのですが・・ お手数ですが、良い方法をご存知の方がおられましたらお願いいたします。

  • ターゲットパスでフレーム指定はできますか

    FlashCS3で作業中です。 メインタイムラインの中の、6フレーム目にsyousai6というムービークリップがあります。9フレーム目にsyousai9というムービークリップがあります。 このsyousai9の中の2フレーム目にボタンを設置し、押したらsyousai6の9フレーム目に画面が切り替わるようにしたいのですが、ビヘイビアパネル>ムービークリップ>フレームまたはラベルへ移動して再生を停止 で、 on (release) { //Movieclip GotoAndStop Behavior this._parent.syousai6.gotoAndStop("9"); //End Behavior } と記述しても無反応です。絶対パスにしても結果は同じでした。どこか記述が間違っていますでしょうか?

  • 複数のクリックボタンにより再生と停止場所を指定する方法

    複数のボタンを用意し、クリックするボタンにより異なるフレーム数で停止たいと思っております。 停止したいフレームごとにstop();を入れると、そこで毎回止まってしまうのでボタン毎に停止場所を指定しようと、以下のように試してみましたが、出来ませんでした。 停止場所をラベルでも指定してみましたが、出来ませんでした。 stop(); _root.next1.onRelease = function() { gotoAndPlay(5); this.stop(10); } _root.next2.onRelease = function() { gotoAndPlay(5); this.stop(20); } どなたかお考えのあるかたご教授いただけますと幸いです。 当方 Flash8 ActionScript2.0 を使用しています。

  • ActionScript 2.0 再生・停止

    クリックで特定のムービークリップが再生・停止するスクリプトをAS2.0(ActionScript 2.0)で記述したいです。 現在はAS1.0で下記のようにムービークリップに記述しています。 これをAS2.0に直すとどのような記述になるでしょうか。宜しくお願いいたします。 onClipEvent (load) { mode = true; } on (release) { mode = !(mode); if (mode) { this.play(); } else { this.stop(); } }

    • ベストアンサー
    • Flash
  • Flash 重複しないムービー再生とその後の処理について

    標題の件、似たようなケースは多く、質問もいろいろ寄せられているの ですが、どうしても自分のケースに応用できなくて質問させていただき ました。 バージョンは「Flash MX 2004」で、やりたいことは以下の内容です。 ------------------------------------------- (1)9つのムービークリップを重複しないようにランダムに再生。  (なので正確にはシャッフルになるのでしょうか。。) (2)全てのムービーを再生後、次のフレームへ移動します。 ------------------------------------------- 以上です。 現在、1フレーム目に“Math.random();”を使ってランダムな数を取得 し、2~10フレームまで任意のフレームへ移動するよう設定していま す。2~10フレームまでは各ムービーを1フレームずつ配置している 状態で、それぞれstop();を設定しています。 各ムービークリップの最後のフレームには“_root.gotoAndStop(1);”を 設定して再びランダムな数を取得するようにしていますが、これだと重複 してしまうし、なおかつループし続けます。 「重複せずに全ムービーを再生後、11フレームへ移行する」という処理 がどうしてもわからず、ここから先が行き詰まってしまいました。 Math.random();のメソッド自体が適切でないのかも知れませんが、それら もふまえて、ご伝授いただけますでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Flash