dポイントプレゼントキャンペーン実施中!

質問です
こんなかんじでhttp://oshiete1.goo.ne.jp/qa4650479.html画像が目的のところに到着したら、別の位置にサッと飛ぶ、というのはどうすればいいのでしょうか
上のページのスクリプトのあとに位置を示す
MC._x=140;
MC._y=-250;
を足したのですが、最初にそれが実行されてしまいます。

A 回答 (1件)

あのスクリプトでは「画像が目的のところに到着する」ことは一生ありませんよ。


ムービークリップを動かしてムービークリップの座標と目標座標の間を 1/5 ずつ縮めているのです。

仮にムービークリップと目標座標との間隔が 1000px あった場合
1フレーム進む時間毎に随時

 1000
  ↓1/5 縮まる
 800
  ↓1/5 縮まる
 640
  ↓1/5 縮まる
 512
  ↓1/5 縮まる
 409.6
  ↓1/5 縮まる
 327.68
  ↓1/5 縮まる
 262.144
  ↓1/5 縮まる
 209.7152
  ↓1/5 縮まる
 167.77216
  ↓1/5 縮まる
 134.217728
  ↓1/5 縮まる
 107.3741824
  ↓1/5 縮まる
 85.89934592
  ↓1/5 縮まる
 68.71947674
  ↓1/5 縮まる
 54.97558139
  ↓1/5 縮まる
 …略…

と言う感じで目標座標に近づき続けるだけです。

したがって「許容範囲」が必要です。
「もし許容範囲に入れば指定座標に移動する」
という部分を付け加えます。



on (rollOver) {
// 目標の X 座標を 0 だとします
var mokuhyouX:Number = 0;
// 目標の Y 座標を 0 だとします
var mokuhyouY:Number = 0;
// 動かす速さ(割合) を 1/5 だとします
var speed:Number = 1/5;
// MC に対して1フレーム進む時間毎に随時実行するイベントハンドラメソッドを定義
MC.onEnterFrame = function() {
// MC の座標を目標座標に speed ずつ近づける
MC._x += (mokuhyouX-MC._x)*speed;
MC._y += (mokuhyouY-MC._y)*speed;
// ---※以下追加-------------------------
// もし MC1 の座標が目標座標 ±1px 以内に近づいたら
if (Math.abs(mokuhyouX-MC._x)<=1) {
MC._x = 140;
MC._y = -250;
// そして MC1.onEnterFrame を削除
delete MC.onEnterFrame;
}
};
}



なお,
今回のご質問のムービークリップのインスタンス名は,

MC._x=140;
MC._y=-250;

で MC になっていますから上のスクリプトもそれに合わせました。
もし MC1 のままである場合は スクリプト とともに,実際のインスタンス名はどう付いているのかなども注意してください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!