メイン コーダーズルーム【スクリプト系】 gotoAndPlayで再生する場合としない場合がある | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
冬雪 | Åê¹ÆNo.21482 投稿日時: 2005-11-15 13:59 |
半人前 居住地: 杜の都 投稿: 31
使用環境:
MacOSX10.4.6 FlashPro8 Firefox |
gotoAndPlayで再生する場合としない場合がある こんにちは。お世話になります。
やっと簡単なASを扱えるようになったレベルです。 gotoAndPlayをイベントによって実行した時と、単純に親フレームが読み込まれた時に実行するようにした時とで違う動きをすることが、なぜそうなるのかわからなくて以下の物を作ってみました。 ルートにキーフレームを1つ作成し、そこに同じシンボルからなるインスタンスを2つ(mc1_mcとmc2_mc)配置しています。 そのシンボルはフレーム数が3つで全てキーフレームのパラパラアニメになっています。 フレーム1のフレームアクションに
としています。 そしてルートのフレームアクションに
としています。 これをムービープレビューすると、mc2_mcのフレーム2が表示された状態で停止します。 ステージをクリックすると、mc1_mcがフレーム2→3→1とアニメして停止します。 gotoAndPlayは指定のフレームから再生するのだから、mc2_mcもmc1_mcと同じように動くと思っていたのですが、何故動かないのかがわからないのです。 ただし、シンボルのフレーム2に this.play(); を記述してみると、mc2_mcもアニメするようになります。 でもgotoAndPlayしてるのにわざわざまたthis.playしないといけないのが納得いかず…。 スクリプトのミスや、そもそもgotoAndPlayの考え方に間違いがあれば指摘して下さると嬉しいです。 それとも、「そういうもの」なのでしょうか?(汗) |
野中文雄 | Åê¹ÆNo.21485 投稿日時: 2005-11-15 14:28 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: gotoAndPlayで再生する場合としない場合がある 「そういうもの」といえば、そういうものですね。でも、ブレーキを踏みながらアクセルを踏込むような処理は、避けた方がよいでしょう。
引用: 冬雪さんは書きました: |
ひろゆき | Åê¹ÆNo.21486 投稿日時: 2005-11-15 14:32 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: gotoAndPlayで再生する場合としない場合がある
以上で、ムービーピレビューの出力結果は、以下の通り。
つまり、mc1_mc, mc2_mc が読み込まれる前に、 mc2_mc.gotoAndPlay(2) を実行しようとしているので、動かない。 では、どうするか。 _root のスクリプトを第1フレームから第2フレームへ。
「サンプル」 #分かりやすいように、2fpsに設定。 ---- あうっ。かぶっちゃった。
|
冬雪 | Åê¹ÆNo.21488 投稿日時: 2005-11-15 15:27 |
半人前 居住地: 杜の都 投稿: 31
使用環境:
MacOSX10.4.6 FlashPro8 Firefox |
Re: gotoAndPlayで再生する場合としない場合がある 理解しました!
引用: 野中文雄さんは書きました: そうですよね。 試しにシンボルのthis.stop();を削除してみたら、mc2_mcも停止せずにアニメしました。 引用: ひろゆきさんは書きました: なるほど! そういうことだったのですね…。 その辺のイメージが頭の中から抜けておりました。 そういえばフレームアクションはそのフレームの描画より先に行われるのだから、その時点のルートから見たら「mc2_mcなんて無いからフレーム移動しろとか言われても困るよ」ってことなのですね。 納得しました。 サンプルまで作って頂いて、ありがとうございますっ。 とてもわかりやすく教えて下さって感謝です。 野中さん、ひろゆきさん、ありがとうございました! trace()も今まで変数の表示くらいしか利用してなかったのですが、カレントフレームや処理される順番を確認するのにも役立つのですね。 |
野中文雄 | Åê¹ÆNo.21490 投稿日時: 2005-11-15 15:46 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: gotoAndPlayで再生する場合としない場合がある MovieClipの存在やフレームは、認識されていますよ(されていなければ、第1フレームで停止しているはずです)。
引用: 冬雪さんは書きました: trace()結果は、確認されていますか? 引用: 野中文雄は書きました: [出力]パネルより引用: _level0.mc2_mc is stopping in frame 2 |
冬雪 | Åê¹ÆNo.21491 投稿日時: 2005-11-15 16:25 |
半人前 居住地: 杜の都 投稿: 31
使用環境:
MacOSX10.4.6 FlashPro8 Firefox |
Re: gotoAndPlayで再生する場合としない場合がある 引用:
野中文雄さんは書きました: 大変失礼致しました。 trace()結果は確認したのですが、その結果の
を見て、「なんでフレーム2になるんだろう?」とうんうん考えているうちにひろゆきさんの投稿を読んで、勝手に納得してしまいました。 おそらくひろゆきさんも野中さんと同じようなことを別の書き方で教えて下さったんだと思うのに、私が勝手な解釈をしてしまったようです。すみません。 ええと、そうするとやっぱり何故mc2_mcがフレーム2で停止するのかがわかりません。 想像なのですが、まずルートがmc2_mc.gotoAndPlay(2)をしてmc2_mcの再生ヘッドがフレーム2に移動して、再生しようとするんだけどもまだmc2_mcはステージに読み込まれていないために再生されない。しかし再生ヘッドは既にフレーム2に移動しているので、ステージに配置された時はフレーム2で停止していることになる。 …ということなのかな?と考えたのですが…。 |
野中文雄 | Åê¹ÆNo.21500 投稿日時: 2005-11-15 18:23 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: gotoAndPlayで再生する場合としない場合がある 「まずルートがmc2_mc.gotoAndPlay(2)をしてmc2_mcの再生ヘッドがフレーム2に移動」します。だからといって、第1フレームアクションを割愛する訳にはいきませんので、再生ヘッドを第2フレームに置いたまま第1フレームアクションを実行します。したがって、第2フレームでstop()することになります。
引用: 冬雪さんは書きました: |
冬雪 | Åê¹ÆNo.21501 投稿日時: 2005-11-15 20:19 |
半人前 居住地: 杜の都 投稿: 31
使用環境:
MacOSX10.4.6 FlashPro8 Firefox |
Re: gotoAndPlayで再生する場合としない場合がある 引用:
野中文雄さんは書きました: なるほど。そうか、そういうことだったのか! だから、フレーム1で現在のカレントフレームをtrace()しているのに、結果が2、となってしまうのですね。 よく考えたら先程自分でシンボルフレーム1のthis.stop()を消してみたらmc2_mcもアニメ再生されたのだから、私の想像の後半は成り立ちませんでした。 今度こそ正しく理解できました。 ここまで導いて下さりありがとうございました。 |
ひろゆき | Åê¹ÆNo.21504 投稿日時: 2005-11-15 20:41 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: gotoAndPlayで再生する場合としない場合がある 引用:
つまり、mc1_mc, mc2_mc が読み込まれる前に、 間違いですね。失礼しました。 「サンプル2」
再生ヘッドは第2フレームに入っていながら、 第1フレームのスクリプトをその後に実行しています。 これが「ブレーキを踏みながらアクセルを踏込むような処理」なんですね。 「loadMovieとgotoAndPlay」
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |