• ベストアンサー

startDragの範囲

お世話になります。 actionscript3.0で作成しております。 現在、ある点Aのドラッグの範囲を下記で指定しております。 pointA.startDrag(false, new Rectangle(0,0,100,100)); 現在このドラッグの範囲が縦:100、横:100の長方形なのですが、 このドラッグの範囲を台形にするにはどうしたらよいでしょうか? また、可能でしたらドラッグの範囲を円にする方法も 教えて頂ければと思いますのでよろしくお願い致します。 startDragだけではなrectangleの形でしかできない!という 解答でも結構ですのでよろしくお願いいたします。

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

  • ベストアンサー
  • cspl
  • ベストアンサー率83% (55/66)
回答No.1

結論から言いますと、startDragでは矩形の範囲しか選択できません。 ですが、ドラッグ対象のオブジェクトにMOUSE_DOWNした段階で MOUSE_MOVEイベントなどで常にマウスの位置を監視して、 特定の図形の上にマウスが納まっているかチェックすれば 台形であろうが円であろうがどんな形状でも可能です。 チェックする方法としては、hitTestObjectなどを使用するのが一番簡単でしょうか。 簡単な例としては以下のような感じです。 ----- import flash.display.MovieClip; import flash.events.MouseEvent; var c:MovieClip; //ドラッグするMC var m:MovieClip; //ドラッグ範囲のMC (台形) c.addEventListener(MouseEvent.MOUSE_DOWN, startDragObj); stage.addEventListener(MouseEvent.MOUSE_UP, stopDragObj); function startDragObj(e:MouseEvent):void { this.addEventListener(MouseEvent.MOUSE_MOVE, onDrag); } function onDrag(e:MouseEvent):void { // ドラッグ範囲上にマウスがあれば、マウスの位置にドラッグ if (m.hitTestPoint(mouseX, mouseY, true)) { c.x = mouseX; c.y = mouseY; } } function stopDragObj(e:MouseEvent):void { this.removeEventListener(MouseEvent.MOUSE_MOVE, onDrag); } -----

関連するQ&A