Ich habe bereits ein paar Fragen dazu gestellt, für andere Probleme, aber ich bin fast fertig!globalToLocal verhält sich nicht wie erwartet? (ziemlich sicher, dass ich es gerade nicht bekomme)
Ich arbeite an einer Drag & Drop-Interaktion in Animate CC, und ich habe es fast funktioniert. Es erkennt beim Ziehen und beim Ablegen, aber die Positionen in den Zielbereichen scheinen ausgeschaltet zu sein. Demo
Meine Vermutung ist, dass es etwas damit zu tun hat, dass ich globalToLocal()
nicht richtig mache, aber ich bin mir nicht sicher. Bis jetzt haben das Ändern von Werten in meinem w1
, w2
, h1
, h2
nichts geändert.
hier ist die Schnitttestfunktion, es ist ein ziemlich populäre Basis here
function intersect(obj1, obj2){
var objBounds1 = obj1.nominalBounds.clone(); //used nominalBounds for shape in animateCC
var objBounds2 = obj2.nominalBounds.clone();
var pt = obj1.globalToLocal(objBounds2.x, objBounds2.y); //is this what's wrong?
var h1 = -(objBounds1.height/2 + objBounds2.height);
var h2 = objBounds2.height/2;
var w1 = -(objBounds1.width/2 + objBounds2.width);
var w2 = objBounds2.width/2;
if(pt.x > w2 || pt.x < w1){
spliceThis(hitTestArray, obj2);
return false;
}
if(pt.y > h2 || pt.y < h1){
spliceThis(hitTestArray, obj2);
return false;
}
if(hitTestArray.indexOf(obj2) < 0){ //Obj2 not found
hitTestArray.push(obj2);
}
return true;
}
obj1
ist das Drag-Objekt, obj2
ist das Drop-Ziel. Ich weiß, Staffelei hat keine Breite und Höhe, also ist das vielleicht ein Teil davon? aber ich bin mir nicht sicher, wie ich es umgestalten würde, um das zu erklären. Auch, es funktioniert etwas, also bin ich mir nicht sicher, warum das der Fall wäre, wenn die Höhe und Breite einfach null sind?
Versteh ich das einfach nicht oder bin ich nah dran?
Sind Ihr obj1 und obj2 skaliert? Denken Sie daran, dass "nominalBounds" die "unskalierten" Grenzen sind. Wenn also eines dieser Objekte skaliert oder deren Eltern skaliert werden, würde dies die Koordinaten beeinflussen. – Lanny
sollten sie ihre ursprüngliche Höhe und Breite sein. Wenn Sie "skaliert" sagen, bedeutet das, dass es auf der Bühne skaliert wird - im Browser oder innerhalb von animiert skaliert wird (wie anders als das ursprüngliche Symbol)? Für mich scheint es, als ob es x und y auf 0 setzt, weil es immer noch gut ist, wenn ich links und oben auf die Ziele gehe. – Mike
Ja, ich meine, wenn die Bibliotheksobjekte auf die Bühne gestellt und skaliert werden, oder eines ihrer Elternelemente werden skaliert (einschließlich der Stufe), dann wird nominalBounds nicht korrekt sein. – Lanny