性格いい人が優勝

お世話になります。
actionscript3.0で作成しております。

現在、ある点Aのドラッグの範囲を下記で指定しております。
pointA.startDrag(false, new Rectangle(0,0,100,100));

現在このドラッグの範囲が縦:100、横:100の長方形なのですが、
このドラッグの範囲を台形にするにはどうしたらよいでしょうか?
また、可能でしたらドラッグの範囲を円にする方法も
教えて頂ければと思いますのでよろしくお願い致します。

startDragだけではなrectangleの形でしかできない!という
解答でも結構ですのでよろしくお願いいたします。

A 回答 (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);
}

-----
    • good
    • 0

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