Actionscript 3 actionscript 3.0拖放和交换

Actionscript 3 actionscript 3.0拖放和交换,actionscript-3,flash,Actionscript 3,Flash,这是我的代码,用于将电影剪辑拖放到匹配的电影剪辑目标中。我想做一个拼图游戏,所有的棋子都在某个地方,当一个棋子被拖到另一个棋子上时,两个棋子交换,如果棋子与目标匹配,它应该锁定到位,并使用此代码保持不变。唯一的问题是,我不知道如何使工件交换位置。有什么想法吗??这可能吗??请帮忙 function pickupObject(event:MouseEvent):void { event.target.startDrag(true); event.target.parent.addC

这是我的代码,用于将电影剪辑拖放到匹配的电影剪辑目标中。我想做一个拼图游戏,所有的棋子都在某个地方,当一个棋子被拖到另一个棋子上时,两个棋子交换,如果棋子与目标匹配,它应该锁定到位,并使用此代码保持不变。唯一的问题是,我不知道如何使工件交换位置。有什么想法吗??这可能吗??请帮忙

function pickupObject(event:MouseEvent):void {
    event.target.startDrag(true);
    event.target.parent.addChild(event.target);
    objectoriginalX=event.target.x;
    objectoriginalY=event.target.y;
}

function dropObject(event:MouseEvent):void {
    event.target.stopDrag();
    var matchingTargetName:String="target"+ event.target.name;
    var matchingTarget:DisplayObject=getChildByName(matchingTargetName);
    if(event.target.dropTarget != null && event.target.dropTarget.parent==matchingTarget)   {
        event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
        event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);
        event.target.buttonMode=false;
        event.target.x=matchingTarget.x;
        event.target.y=matchingTarget.y;
    }
}
  • 将拖放对象存储在两个不同的阵列以及x和y位置。考虑3个拖放对象。

    var drag:Array = new Array(drag0, drag1, drag2);
    var drop:Array = new Array(drag0_target, drag1_target, drag2_target);
    var points:Array = new Array({x:drag_0.x, y:drag_0.y},...);
    
    //this regular expression will return a digit number from given string.
    var pattern:RegExp = /\d/;
    
  • 注意:拖放数组对象名称应以拖放对象名称开头。用于匹配目的

  • 鼠标侦听器添加到拖动数组对象中
  • MouseDownHandler()

    e.target.startDrag()

  • 穆斯汉德勒()

    //为存储当前拖动对象编号创建一个tmp变量;
    tmp=e.target.name.match(模式);
    
    对于(i=0;i您确定
    event.target
    是您认为的吗?
    event.currentTarget
    将始终是您将侦听器附加到的项目,
    event.target
    可以是当前目标中的任何可单击的子项。我不能肯定我知道,我对这方面的知识不太了解,因为我刚刚开始t此编码用于一个简单的拖放形状游戏,您可以将形状拖动到其正确的目标中,这就是它的上下文。还有其他用于形状的编码,我想我必须将其放在某个地方,但我将尝试数组编码,看看这将带我去哪里:)非常感谢,我将尝试一下,看看效果如何!:)
    //create a tmp variable for store the current drag object number;
    tmp = e.target.name.match(pattern);
    for(i=0;i<drop.length; i++){
        //Check whether the hit occurred in the drop clips                  
        if(MovieClip(e.target).hitTestObject(this.drop[i])){
           //Check whether the object has been dropped in a right place.
           if(drop[i].name.split("_")[0] == e.target.name){               
               e.target.x = drop[i].x;
               e.target.y = drop[i].y;
           }else{
               //else place the drag object into the initial position.
               e.target.x = points[tmp].x;
               e.target.y = points[tmp].y;
           }                                             
        }                   
    }