• 締切済み

同じ動作のmcが増えると同じ動作をしなくなる

こんにちは。いつも、ありがとうございます。MAC_OS10、Flash8です。 以下のようなmcを作って水泳のアニメーションをしています。 ひとりだと問題なく動作するのですが、4人泳がせると何人かはターンしないまま、後ろ向きで泳いでしまいます。回避できる方法はないでしょうか?ここから前に進まなくて、困っています。 onClipEvent (enterFrame) { if (_x >= 675) { this.gotoAndPlay ("turn"); _x = 675; vectx = -vectx; } _x += vectx; if (_x <= 48) { if (turn_tim == 0) { this.gotoAndPlay ("turn2"); _x = 48; vectx = _parent.spd[2]; _x += vectx; } else { this.gotoAndPlay ("gool"); _x = 48; } } } onClipEvent (load) { vectx = _parent.spd[2]; turn_tim = 0; }

みんなの回答

  • suzuki-_-
  • ベストアンサー率77% (152/195)
回答No.1

各フレームラベルの終わりに gotoAndPlay("turn2"); みたいな形でループのためのスクリプトを記述していませんか? もしそのフレームとenterFrameのif分岐が重なってしまうと、両方実行しようとしてしまう可能性があります if(_x >= 675)が通った! →enterFrameのthis.gotoAndPlay ("turn");を実行! →フレームスクリプトのgotoAndPlay("turn2");を 実行! という形で結果的にturn2へ行ってしまうというものです なのでenterFrameのスクリプトを以下のように変更すれば解決するのではないでしょうか //最初はフレームラベルturn2からスタートと過程しています onClipEvent (enterFrame) { _x += vectx; if (_x>=675) { this.gotoAndPlay("turn"); vectx = -vectx; _x = 675+vectx; } else if (_x<=48) { if (turn_tim == 0) { this.gotoAndPlay("turn2"); vectx = _parent.spd[2]; _x = 48+vectx; } else { this.gotoAndPlay("gool"); _x = 48; } } else { if (_currentframe == 3) {//3はturn2の最後のループを指定しているフレーム要変更 gotoAndPlay("turn2"); } else if (_currentframe == 6) {//6はturnの最後のループを指定しているフレーム要変更 gotoAndPlay("turn"); } } }

Flash-love
質問者

お礼

ありがとうございます。調べてみたところ、”turn”の続きは反対方向の泳ぎにつながっていました。実は自力で回避を試みました。4人のスピードの差をつけてやるとターンしてくれました。これって、PCの処理速度の問題なのでしょうか?ターンの件はクリアできたのですが、その後いろいろなところで同じスクリプトを入れているのに同じように動いてくれないとこが出てきて、再生の度に違うので、大混乱になっています。

関連するQ&A