• 締切済み

移動範囲を指定したい

マウスを追いかける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から離れないという様になってしまうのですがどうすればいいでしょうか??

みんなの回答

  • gunkiti
  • ベストアンサー率0% (0/1)
回答No.1

こんばんは。MC1がMC2にくっついたままになるのは、一度if(this.hitTest(_root.ki.kusa))がtrueになるとずーとtrueだからです。だからelse文に何を書いてもその部分は実行されません。 で、ちょっと考えてみました。hitTestで判定するのではなく、MC1のy座標で判別してはいかがでしょうか。下のコードはMC1に書いたものです。300という数字はMC2との境界のy座標です。(こちらで勝手に設定したものですから自分で変えてください。) onClipEvent(enterFrame) { if(this._y < (300 - this._height/2)) { this._x += (_root._xmouse - this._x) *0.1; this._y += (_root._ymouse - this._y) * 0.1; } else if(this._y >= (300 - this._height/2)) { if(_root._ymouse > 300) { this._x += (_root._xmouse - this._x) * 0.1; this._y += 0; } else { this._x += (_root._xmouse - this._x) *0.1; this._y += (_root._ymouse - this._y) * 0.1; } } } これでやってみるとできました。 ただ、マウスの動かし方次第で少し境界をオーバーする場合があります。 this._y >= (300 - this._height/2) 300以上と指定しているので、MC1のy方向への移動量によって300ぴったりだったり、ちょっとオーバーしたりしますが、これぐらいは我慢しないとしょうがないかも・・・

fujitubo
質問者

お礼

gunkiti様返答ありがとうございます。 返事が遅くなりまして大変申し訳ありませんm(__)m わざわざありがとうございます(>_<) 大変助かりました。