Actionscript 3 ActionScript 3拖放
我有这个AS3代码:Actionscript 3 ActionScript 3拖放,actionscript-3,flash-cs5,Actionscript 3,Flash Cs5,我有这个AS3代码: circle_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag); square_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag); stage.addEventListener(MouseEvent.MOUSE_UP, drop); function drag(e:MouseEvent):void { e.target.startDrag(false, new Rec
circle_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag);
square_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag);
stage.addEventListener(MouseEvent.MOUSE_UP, drop);
function drag(e:MouseEvent):void
{
e.target.startDrag(false, new Rectangle(30,30,150,150));
}
function drop(e:MouseEvent):void
{
stopDrag();
}
现在,如果我测试电影,如果我点击圆形或正方形,他们会跳进舞台,因为我不允许把他们移出那个矩形
制作一个名为
target\u mc
的电影剪辑,在其内部绘制一个150x150的矩形,并将其放置在舞台上x=30和y=30(这将替换代码中的矩形新矩形(30,30150150)
)。
现在,请尝试此代码,如果拖动的对象未放置在正确的位置,它将使其返回其原始位置。您可以使用任何形状的任何其他对象来限制可放置区域
circle_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag);
square_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag);
stage.addEventListener(MouseEvent.MOUSE_UP, drop);
var draggedObject:Object;
function drag(e:MouseEvent):void
{
draggedObject = e.target;
draggedObject.orginalX = draggedObject.x;
draggedObject.orginalY = draggedObject.y;
draggedObject.startDrag(false);
}
function drop(e:MouseEvent):void
{
stopDrag();
// target_mc is the name of the object you want to allow dropping over it only,
// it can be a movieclip with any shape inside it (rectangle or any other irregular shape).
// if you like you can make it invisible by setting its alpha to 0 (target_mc.alpha = 0;)
// Check if the mouse is over the target object at the dropping moment :
if (target_mc.hitTestPoint(stage.mouseX,stage.mouseY,true))
{
trace("it was dropped INSIDE the target area");
// ...
}
else
{
trace("it wa dropped OUTSIDE the target area");
// bring the dragged movie back to its orginal place,
// so it will not be able to be dropped outside your target area :
draggedObject.x = draggedObject.orginalX;
draggedObject.y = draggedObject.orginalY;
}
}
嘿,我遇到了这个密码。从现在开始改变不是更好吗
if (target_mc.hitTestPoint(stage.mouseX,stage.mouseY,true))
{
trace("it was dropped INSIDE the target area");
// ...
}
到
第一个,如果你用鼠标点击,将触发代码,即使你没有拖动对象。
最后一个选项将确保拖动的对象正在命中目标,而不是确保鼠标正在命中目标 因此,您希望能够在舞台上的任何位置拖动圆形和方形,但只能停止在定义的矩形中拖动它们?
if (target_mc.hitTestPoint(draggedObject.x,draggedObject.y,true))
{
trace("it was dropped INSIDE the target area");
// ...
}