我正在寻找的是当我在舞台上拖动一个物体时,我想要拖动一个底层物体(同一层),并保持放置主要物体的位置。我是否需要在多个对象的情况下使用数组? 这仅适用于一个对象(以及'子对象'),总共将有22个,我无法将子对象添加到其movieclip中,否则将其他21个对象添加到其中在舞台上会重叠并互相干扰。
这是我到目前为止所见,也见图。任何人都可以指引我使用一些可用的代码吗?
CF.addEventListener(MouseEvent.MOUSE_DOWN, dragCF);
CF.addEventListener(MouseEvent.MOUSE_OVER, fadeCF_spaceIN);
CF.addEventListener(MouseEvent.MOUSE_UP, fadeCF_spaceIN);
function dragCF(evt:MouseEvent):void {
addChild(MovieClip(evt.currentTarget));
evt.currentTarget.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP, dropCF); }
function dropCF(evt:MouseEvent):void {
stopDrag();
stage.removeEventListener(MouseEvent.MOUSE_UP, dropCF); }
function fadeCF_spaceIN(evt:MouseEvent):void {
CF_space.alpha = .5;
stage.addEventListener(MouseEvent.MOUSE_OUT, fadeCF_spaceOUT);
stage.addEventListener(MouseEvent.MOUSE_DOWN, fadeCF_spaceOUT); }
function fadeCF_spaceOUT(evt:MouseEvent):void {
CF_space.alpha = 0;
stage.removeEventListener(MouseEvent.MOUSE_OUT, fadeCF_spaceOUT); }
示例说明:
答案 0 :(得分:0)
var CF_1:Array = [CF_mc, CF_space]; // instance names
for each(var CF1_MC:MovieClip in CF_1)
{
CF1_MC.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
CF1_MC.addEventListener(MouseEvent.MOUSE_UP, dropIt);
CF1_MC.startX = CF1_MC.x;
CF1_MC.startY = CF1_MC.y;
}
function pickUp(event:MouseEvent):void
{
event.target.startDrag(true);
event.target.parent.addChild(event.target);
}
function dropIt(event:MouseEvent):void
{
event.target.stopDrag();
}
答案 1 :(得分:0)
不能100%确定你的意思,但是你可以使用ENTER_FRAME函数而不是startDrag和stopDrag吗?这是非常简单的示例,您也可以使用对象数组。
var xDifference:Number;
var yDifference:Number;
var dragging:Boolean;
draggableObject.addEventListener(MouseEvent.MOUSE_DOWN, mDown);
draggableObject.addEventListener(MouseEvent.MOUSE_UP, mUp);
stage.addEventListener(Event.ENTER_FRAME, loop);
function loop(evt:Event):void{
if(dragging){
draggableObject.x = mouseX;
draggableObject.y = mouseY;
secondaryObject.x = draggableObject.x + xDifference;
secondaryObject.y = draggableObject.y + yDifference;
}
}
function mDown(evt:MouseEvent):void{
xDifference = secondaryObject.x - draggableObject.x;
yDifference = secondaryObject.y - draggableObject.y;
dragging = true;
}
function mUp(evt:MouseEvent):void{
dragging = false;
}
根据具体情况,您可能还需要计算鼠标光标和draggableObject在MOUSE_DOWN上的注册点之间的差异,以防止draggableObject跳转到其中心点正好位于鼠标位置的位置。
答案 2 :(得分:0)
感谢您的加入,事实证明它更简单,更简单:
object.addEventListener(MouseEvent.MOUSE_DOWN, drag);
object.addEventListener(MouseEvent.MOUSE_UP, drop);
function drag(evt:MouseEvent):void {
addChild(MovieClip(evt.currentTarget));
evt.currentTarget.startDrag();
}
function drop(evt:MouseEvent):void {
stopDrag();
object_space.x = object.x;
object_space.y = object.y;
}