2016-05-23 21 views
0

Ich möchte das Spiel per Drag & Drop erstellen mehrere ziehbare Objekte erstellen und es kann auf mehrere Ziele gezogen werden. Aber ich habe einen Fehler gefunden, wenn ich das erste Objekt, das ich ausgewählt habe, auf ein bestimmtes Zielobjekt ziehe, das nicht auf das Ziel gezogen wird, und dann ziehe ich es auf ein anderes Ziel, das dann erfolgreich ist. Ich wollte es reparieren. Und wenn Sie es reparieren können, wenn das Objekt auf das Ziel gezogen wird und dann durch ein anderes Objekt ersetzt werden soll, wird das gezogene Objekt ersetzt und an seine ursprüngliche Position zurückgegeben.AS3 Fehler Drag & Drop mehrere ziehbare Objekt auf mehrere Ziel

Dies ist eine Übersicht des Programm

enter image description here

Und das ist der Quellcodes, die ich benutze

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); 
    } 
} 

ich ziehbar Objekte bin mit von addListener Funktion setzen.

ich auch seine Fla hier heruntergeladen werden kann (TEST.FLA) eher können Sie mehr gelten leicht behoben Codes

Antwort

0

Sie können MOUSE_UP Ereignis in Ihrem Ziele hinzuzufügen, anstatt Sie Objekte gezogen. Wenn dann das MOUSE_UP-Ereignis ausgelöst wird, werden Sie wissen, welche Objekte Ihr Ziel (e.target) ohne hitTestObject ist. Der Code lautet wie folgt:

Sie können die Maus mouseEnabled des gezogenen Objekts festlegen, wenn die Maustaste gedrückt wird, und true, nachdem sie gezogen wurde.

+0

können Sie die richtigen Codes angeben? –