• ベストアンサー

動かした画像を元の位置に戻すには

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

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.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 のままである場合は スクリプト とともに,実際のインスタンス名はどう付いているのかなども注意してください。

関連するQ&A