• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ドラッグアンドドロップアンドスムーズ移動)

ドラッグアンドドロップでスムーズに移動するスクリプト

このQ&Aのポイント
  • ドラッグアンドドロップでムービークリップを好きな場所に移動させ、瞬間的に元の位置に戻すスクリプトを書きたい。
  • スムージング効果を加えて戻り方をだんだんと滑らかにしたい。
  • onClipEvent(enterFrame)を使用して、x:0, y:0の座標に対して、ムービークリップの現在位置を滑らかに戻す処理を実装したい。

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

  • ベストアンサー
  • is_may
  • ベストアンサー率65% (58/89)
回答No.1

マウスを放すイベントハンドラはもう一つ「releaseOutside」が必要です。 マウスを離したときにマウスポインタの下にMC(ムービークリップ)が無かった場合、「release」が反応せず、ドラッグが解除されません。 ↑の方法では毎回onEnterFrameを処理しているので基点に戻った後もずっと(0,0)に行こうとするので少しどんくさいですよね。 AS3.0からはMCに直接onClipEventやonが記述できなくなりましたので、少しずつ「ターゲット.onEnterFrame=function(){};」の方法に慣れるのもいいかもしれません。 この方法だと最初から最後まで動き続ける「onClipEvent(enterFrame){}」と違い、後で解除することも出来るので処理を軽くすることが出来ます。 on (press) { if (this.onEnterFrame) { delete this.onEnterFrame; //onEnterFrameがまだ働いていたら終了(MCが基点に戻る前にMCを再度クリックした場合) } this.startDrag (); } on (release, releaseOutside) { this.stopDrag (); this.onEnterFrame = function () { //onEnterFrameを開始 this._x += (0 - this._x) * 0.3; //基点に戻す this._y += (0 - this._y) * 0.3; if (Math.abs (this._x) < 0.2 && Math.abs (this._y) < 0.2) { //スライド移動でほぼ(0,0)まで戻ってきたら強制的に(0,0)に移動し、onEnterFrameを終了 this._x = 0; this._y = 0; delete this.onEnterFrame; } }; }

trfnc223
質問者

お礼

とてもわかりやすくありがとうございました! できました!

すると、全ての回答が全文表示されます。

関連するQ&A