Ich habe eine alternative Lösung gefunden, die Drag-Objekte nicht automatisch an jeder Fangzone einrasten lässt, aber es erlaubt Ihnen, sie mit weniger Code zu steuern.
habe ich eine Funktion, das Objekt (Code) und die Zone (Entwurf) zu erhalten:
function snapTo(code, outlineSnap) {
var outline = outlines[outlineSnap + '_black'];
if(isNearOutline(code, outline)) {
code.position({
x : outline.x,
y : outline.y
});
console.log("privKey:"+ privKey);
console.log("Key:"+ key);
console.log(code.id());
codeLayer.draw();
var testKey = privKey+ "_black";
if(code.id() == outlineSnap) {
setTimeout(function() {
code.draggable(false);
}, 50);
}
}
}
Diese Funktion erstellt die für (in Codes var key) sein muss, {} und außerhalb des Drag Veranstaltungen. Ich habe dann die Funktion im dragend-Event aufgerufen.
code.on('dragend', function() {
snapTo(code, "pstart");
snapTo(code, "pend");
}
Es ist ein bisschen ein Problem mit der Partitur hinzufügen, ich habe eine Lösung, die nur noch die nicht hält die gefunden if-Anweisung ziehbar für die richtige Objektkontur Kombination auf false zu ändern, als ob diese es herausgenommen der Benutzer könnte die Ziehfunktion für Punkte "farmen" ...
Sie müssen genauer sein. Was hast du versucht? Was hat nicht funktioniert? – lavrton
@lavrton Wie kann ich das "Giraffen" -Bild an der Position "Löwe" ausrichten, wenn es in der Nähe der Kontur des Löwen ist. Ich habe versucht, den if (isNearOutline (Tier, Umriss)) Teil des An (Dragent) zu ändern, so dass der "Umriss" nur der Löwe ist. Das funktioniert, wenn ich alle Bilder zu den Löwen ändere (was für mein Spiel gut ist), aber ich brauche eine Funktion, die durch alle Umrisse "schleifen" kann, um Bilder an ihnen einzufangen. –