• 締切済み

同じ動作の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; }

  • Flash
  • 回答数1
  • ありがとう数1

みんなの回答

  • 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

  • MCのgotoAndPlay制御について

    今現在すごく初歩的なものを作っています。 まず、MCですが、1~10フレームは歩く動作、11~20フレームは座る動作 と言ったフレームで動作を表現したものです。 このMC内で1~10フレームを繰り返すようにgotoAndPlay(1)と10フレーム目に書きました。 そして、このMCに onClipEvent (load) { // スピードの初期値 spd = 5; } onClipEvent (enterFrame) { // spd ずつ右へ移動 this._x += spd; if(this._x>100){ spd = 0; this.gotoAndPlay(11); } } といったように A地点~B地点は歩いている動作をさせながら5ずつ移動させ、100まで来たら停止させ、 そのB地点では座る動作(MCの11フレーム目から)をスタートさせるようにしました。 しかし、実際はMCの11フレーム目で固まった状態です onClipEvent (enterFrame)なので当たり前なのは分かっているのですが、 他に方法が分かりません。 何かなるべく完結な方法はありますでしょうか?

    • ベストアンサー
    • Flash
  • mcのx座標が50以上になったら次フレーム

    タイトルどおり、 mcのx座標が50以上になったら次フレーム という処理をしたく、 mcに次のアクションスクリプトを記述しました。 onClipEvent(enterFrame){ this._x += 10; } onClipEvent(load){ if(this._x >= 50){ nextFrame(); } } しかし何故か次のフレームに行ってくれません。 どこか間違っているのでしょうか。。。 nextFrame();をgotoAndPlay(2);にしても駄目でした。

    • ベストアンサー
    • Flash
  • 衝突している間、違うポーズに変えたい

    いつもありがとうございます。MAXOS10でFlash8です。 障害物に衝突している間は、違うポーズにしたいのでhitTestを使って以下のようなスクリプトを障害物のmcに入れました。 衝突すると、泳ぐ人は立ち上がるポーズになるのですが、その後、障害物がなくなっても立ったまま、泳いでいってしまいます。 ポーズは、泳ぐ人のmcに複数作ってフレーム移動で変えています。 衝突していた、障害物がなくなったら元のように泳いでほしいのですが、 うまくいきません。よろしく、お願いします。 onClipEvent (enterFrame) { tmp = this.hitTest (this._parent._parent.swim_02); if (tmp == true) { _parent._parent.swim_02.gotoAndPlay ("gool"); _parent._parent.swim_02._x = this._x; } }

  • flashのMCの中にMCを入れてその中のボタンでシーンを移動したいのですができません

    flashの シーン1で大元になる5つのMCで構成された大元のMCにはonClipEvent (enterFrame)のスクリプトを記述しています。 その5つのMCの中、それぞれに、ボタンがあります。そのボタンはシーン1からシーン2に飛ばすアクションをつけているのですが、まったく反応しません。 なぜか、同一シーンのフレーム移動は反応するのですが。ボタンの記述は下記です。 on (release) { _parent._parent.gotoAndPlay("work", 1);

    • ベストアンサー
    • Flash
  • 複数のmcに同じイベントを記述したら、1つしか反応しない

    うまくいかない原因がわからず困っています。 画面上の複数のmcに同じイベントを記述しました。 内容はシンプルで、「mc01にマウスがのったらフレームf01に移動する、 マウスが離れたらフレームstartに戻る」というものです。 mc02はf02へ、mc03はf03へ移動というふうにします。 これをmc01からmc07まで順番に書いていったところ mc07は反応するのですが、あとの6つが反応しません。 mc07の記述を消すとmc06が反応するようになり、 どうやら一番最後に記述している部分しか反応しないようです。 これ↓がそれぞれのmcに書いてるASです。 ---------------------------------------------------------- onClipEvent (enterFrame) { if (_root.mc01.hitTest(_root._xmouse,_root._ymouse,1)) { _root.gotoAndPlay("f01"); } else { _root.gotoAndPlay("start"); } } ---------------------------------------------------------- ちなみにFlash8使用、プレイヤー8でパブリッシュしてます。 どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • mcの中のフレームラベルの移動

    初めまして。 当方初心者なので、よくわからないので、質問させていただきます。 外部にswfとしてフレームラベルの複数ついたものがあって、 それをmc(mcs_mc)で読み込みし、スクリプトで一定時間毎に mcに読み込んだ外部swfのフレームラベル(chapter1~chapter10)を移動させたいのですが、うまく動いてくれません。 どの用にしたらよいでしょう?よろしくお願いします。 onClipEvent(load){ this._lockroot = true; } onClipEvent(enterFrame){ setInterval( function(){ mcs_mc.gotoAndPlay("chapter2"); }, 1000); }

    • ベストアンサー
    • Flash
  • 移動範囲を指定したい

    マウスを追いかけるMC1の追いかける範囲を指定したいのですがうまくいきません; 細かい指定としては↓ (1)画面の下1/5ぐらいのMC2の中にはMC1は入れない (2)マウスがMC2の中にある時はMC1はy座標は変化なし x座標はマウスを追いかける(つまり、横にしか動かない) (3)マウスがMC2から出てきたら、再びMC1はマウスを追いかける 現状としては ------------------------------------------- onClipEvent (enterFrame) { if (this.hitTest(_root.ki.kusa)){ _x += (_parent._xmouse-_x)*0.1; this._y += 0; }else{ _x += (_parent._xmouse-_x)*0.1; _y += (_parent._ymouse-_y)*0.1; } } ------------------------------------------- これでは、マウスがMC2から出てきた時に、MC1がMC2から離れないという様になってしまうのですがどうすればいいでしょうか??

  • キーボードで複数のMCを操作するには・・・

    FLASH初心者です。 色々検索してみたり試したりしたんですが、上手くいかなかったのでこの場を借りて質問させていただきます。 分かりにくい部分があったら申し訳ありません。 今、キーボードを使って複数のムービークリップを制御するFLASHを作成しているのですが、 画面上に複数のMCが配置してあって、その1フレーム目を何もない状態にし、2フレーム目からアニメーションが開始するようになっています。 キーを押してアニメーションが再生するところまではできたのですが、"A"に対応するMCを動かしたあと"B"に対応したMCを動かすと"A”のMCが消えてしまいます。 一度読み込んだMCを消えないようにするにはどうしたらいいでしょうか。 MCには下記のようにかきこんでいます。 onClipEvent (keyDown) { this.gotoAndStop(1); if (Key.isDown(66)) { this.gotoAndPlay(2); } } 深度のせいなのだろうかと思うのですが、いまいち深度をどう定義していいものか理解できず苦戦しております。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 【Key.isDown】

    なんにもインスタンスを持たない【MC】を つくって、下記のソースを実行。 onClipEvent (enterFrame) { if (Key.isDown(Key.UP)) { _y -= 1; // 上に移動 } } そうすると↑キーを押すと【MC】が移動するのですが 本来やりたいことの動作確認でしかなく、 gotoAndPlay();を使うのが目的で 別に移動機能は無いものと考えてもらいます。 onClipEvent (enterFrame) { if (Key.isDown(Key.UP)) { gotoAndPlay("label"); } } フレームの移動をさせるにはどうすればいいのですか?? 教えてください><

    • ベストアンサー
    • Flash
  • onClipEvent (enterFrame)を利用して一旦止めたいのですが。

    質問させてください。 onClipEvent (enterFrame) { this._x = this._x - spd; if (this._x <= (-600) * num) { this._x = 0; } } を利用して、右から左へテキストが流れるよに設定しましたが、 一旦、x軸10で止めて、10秒後にまた流れる、という形にしたいのですが、 ご教授いただけますでしょうか。 WIN XP FLASH 8

    • ベストアンサー
    • Flash