Frage

Ich habe ein Movieclip-Objekt, das für Actionscript (AS3) in einer SWC-Datei exportiert wird.

Als ich eine Instanz des Clips auf der Bühne platzieren ohne Modifikationen, es in der oberen linken Ecke erscheint, etwa die Hälfte von der Bühne (das heißt nur der untere rechte Quadrant des Objekts sichtbar ist). Ich verstehe, dass dies, weil der Clip einen Registrierungspunkt hat, der nicht die obere linke Ecke.

Wenn Sie getBounds () auf der Movieclip aufrufen können Sie die Grenzen des Clips erhalten (vermutlich aus dem „Punkt“, dass es auf ausgerichtet ist), die so etwas wie (links aussieht: -303, oben: -100, rechts: 303 , unten: 100), können Sie die linken und oberen Werte aus dem Clip x und y subtrahieren:

clip.x -= bounds.left;
clip.y -= bounds.top;

Das scheint richtig den Clip vollständig auf der Bühne mit dem dem Clip direkt in der Ecke der Bühne oben links ausgerichtet werden.

Aber! Nach dieser Logik scheint nicht zu funktionieren, wenn sie auf der Mitte der Bühne ausrichten!

clip.x = (stage.stageWidth / 2);
etc...

Dies schafft die verrückte Paralleluniversum, wo der Clip jetzt unten in der rechten unteren Ecke der Bühne.

Der einzige Hinweis ist, dass ich einen Blick auf:

clip.transform.matrix

und

clip.transform.concatenatedMatrix
  • Matrix hat einen Wert von tx 748 (Halbstufenhöhe) ty-Wert von 426 (die Hälfte von Stufenhöhe)

  • concatenatedMatrix hat einen tx-Wert von 1699,5 und ty Wert von 967,75

Das ist auch offensichtlich, wo die MovieClip- positioniert ist immer, aber warum? Wo wird diese zusätzliche Übersetzung aus Richtung?

War es hilfreich?

Lösung

Ich glaube, dass ich das Problem gelöst haben.

Es scheint, dass, wenn die Stufe nicht auf bestimmte Dimensionen gesetzt, die Skala der Punkte (oder dieses speziellen Vektorobjekts in meinem Fall) auf der Bühne zu einigen voreingestellten Skala / Dimensionen relativ ist (Der Ursprung von denen ich bin nicht sicher -. mit einigen Tests sieht es aus wie es durch das Verhältnis und die Abmessungen der Bühne) betroffen ist

Die Erhöhung die Größe der Stufe erhöht, dass Skalierungswert, der durch einige Reihe von Verkettungen von Matrizen Ergebnisse in dem Movieclip skaliert immer und in demselben Prozentsatz übersetzt (wie die Bühne), auch wenn Sie explizit die x / y / Breite / Höhe Werte.

. (Anmerkung: nicht nur dynamisch Ändern der Größe Ändern der Größe des Fensters zu schließen und wieder öffnen Sie das Fenster an dieser neuen Größe erzeugt das gleiche Verhalten)

Ich vermute, dies geschieht nur mit Vektorobjekten?

Wie auch immer, ist das Update auf die Bühne auf eine explizite Breite und Höhe einzustellen. Dann wird die Übersetzung und die Skalierung des Objekts erscheinen eine Identität Muttermatrix zu verwenden, und alles funktioniert wie man es erwarten würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top