EaselJS - Beste Weg, um zu erkennen, Kollision
Ich versuche zu finden eine gute Möglichkeit für die Kollisionserkennung für meine easelJS kleine app.
Ich habe gerade 2 Rechteck mit createjs.Form
Aber nach dem erstellen eines Rechteck-Form, die API nicht lassen Sie mich wissen, die Breite und Höhe des Rechtecks (ich weiß nicht, warum).
EaselJS Form hat eine Methode namens "hitTest" aber es kann nur verwendet werden, wenn Sie testen möchten Kollision der Form und eine Punkt.
//Here's the code http://jsfiddle.net/ZbZjL/16/.
//Create a stage by getting a reference to the canvas
stage = new createjs.Stage("demoCanvas");
//Create a Shape DisplayObject.
redRect = new createjs.Shape();
redRect.graphics.beginFill("red").drawRect(0, 0, 60, 40);
redRect.regX = 30;
redRect.regY = 20;
redRect.x = 200;
redRect.y = 100;
blueRect = new createjs.Shape();
blueRect.graphics.beginFill("blue").drawRect(0, 0, 60, 40);
blueRect.regX = 30;
blueRect.regY = 20;
blueRect.x = 0;
blueRect.y = 100;
//Add Shape instance to stage display list.
stage.addChild(redRect);
stage.addChild(blueRect);
//Update stage will render next frame
stage.update();
document.addEventListener("mousemove", onMouseMove);
function onMouseMove(event) {
blueRect.x = event.offsetX;
stage.update();
}
InformationsquelleAutor Thịnh Phạm | 2013-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist richtig, dass EaselJS nicht lassen Sie wissen, die Breite und die Höhe von text und Formen.
Dies ist eine Einschränkung von EaselJS, aber Sie können tatsächlich diese Eigenschaften selbst:
Aus der Dokumentation:
setBounds können Sie manuell geben Sie die Grenzen eines Objekts, das entweder nicht berechnen kann, Ihre eigenen Grenzen (ex. Form & Text) für die zukünftige Verweisung, so ist das Objekt im Container-Grenzen. Manuell setzen Grenzen werden immer überschreiben berechneten Grenzen.
Dann können Sie verlangen, die Breite und Höhe, indem er für blueRect.getBounds();
Prüfen, Kollisionen zwischen zwei Rechtecken können Sie diesen code verwenden, die zwei Rechtecke und gibt true zurück, wenn Sie sich schneiden (ich fand diesen code hier irgendwo auf stackoverflow)
Können Sie erklären, diese Zeile code für mich? Es denke, es macht keinen Sinn und es scheint nicht zu funktionieren für mich.
Die Funktion gibt true oder false zurück, je nachdem, ob sich die beiden Rechtecke überschneiden oder nicht. Sie vereinfachen könnten, indem die Linie durch Eingabe
return (rect1.x >= rect2.x .... etc)
InformationsquelleAutor Kokodoko
hier ist eine nette Funktion von fragenwissen.com,
er steuert zuerst die objs Sichtbarkeit eine dann die objs position.
InformationsquelleAutor vix
Dank @Kokodoko für seine Lösung, hier ist eine andere Implementierung mit
nominalBounds
um Breite und Höhe, und mit den code in eine Funktion aus:InformationsquelleAutor jck