AS3错误将多个可拖动对象拖放到多个目标

时间:2016-05-23 20:56:48

标签: actionscript-3 flash adobe

我想让游戏拖放以创建多个可拖动对象,并且可以拖动到多个目标。但是当我拖动到第一个对象时我遇到了一个错误,我选择某个目标对象没有被拖动到目标,然后我将它拖到另一个目标然后成功。我想解决它。如果你可以在将对象拖动到目标然后想要被另一个对象替换时修复它,那么拖动的对象将被替换并返回到其原始位置。

这是程序的概述

enter image description here

这是我使用的源代码

var xPos:int;
var yPos:int;
var poin:int = 0;
var namaobj1:String;
var namaobj2:String;

addListeners(membaca, menulis, berenang, sepakbola, melukis, memasak, menari, bercocoktanam, beladiri, bermainmusik);

proses.addEventListener(MouseEvent.CLICK,proses1);


function getPosition(target:Object):void
{
    xPos = target.x;
    yPos = target.y;
}

function dragObject(e:MouseEvent):void
{
    getPosition(e.target);

    e.target.startDrag(true);
}

function stopDragObject(e:MouseEvent):void
{
    if (e.target.hitTestObject(getChildByName("target2")))
    {
        e.target.x = getChildByName("target2").x;
        e.target.y = getChildByName("target2").y;
        namaobj2 = e.target.name;
    }

    else if (e.target.hitTestObject(getChildByName("target1")))
    {
        e.target.x = getChildByName("target1").x;
        e.target.y = getChildByName("target1").y;
        namaobj1 = e.target.name;
    }
    else
    {
        e.target.x = xPos;
        e.target.y = yPos;
    }


    pil1.text = namaobj1;
    pil2.text = namaobj2;


    e.target.stopDrag();

}

function addListeners(... objects):void
{
    for (var i:int = 0; i < objects.length; i++)
    {
        objects[i].addEventListener(MouseEvent.MOUSE_DOWN, dragObject);
        objects[i].addEventListener(MouseEvent.MOUSE_UP, stopDragObject);
    }
}

我通过添加addListener函数来使用可拖动对象。

我还包括他的.fla可以在这里下载(TEST.FLA)而不是你可以更容易地应用固定代码

1 个答案:

答案 0 :(得分:0)

您可以在目标中添加Mouse_UP事件,而不是拖动对象。然后,当触发MOUSE_UP事件时,您将知道哪些对象是您的目标(e.target)而没有hitTestObject。代码如下:

鼠标按下时可能需要设置拖动对象的mouseEnabled,拖动后设置为true。