Wie speichert (repräsentiert) Flash Movieclips und Sprites?

7

Wenn wir ein Objekt in Flash zeichnen und es in einen Movieclip oder ein Sprite konvertieren, wie wird es in Flash gespeichert oder dargestellt? Ich weiß, dass es in der Vektorgrafik mithilfe von Formeln als Liniensegmente gespeichert oder dargestellt wird. Gibt es eine Möglichkeit, die Eckpunkte der gezeichneten Form zu ermitteln?

Angenommen, ein einfaches Rechteck wird gezeichnet und in einen Movieclip konvertiert. Gibt es überhaupt eine Möglichkeit, die Eckpunkte und Liniensegmente vom Sprite zu erhalten? Damit wird seine Form erhalten. Es sollten genügend Informationen eingeholt werden, damit die Form repliziert werden kann. Das ist der Schlüssel - die Replikation.

Wo speichert Flash in einfachen Worten Informationen zu einer Form, die gezeichnet wurde, damit wir sie erhalten und versuchen können, die Form selbst zu replizieren?

Astromaz3
quelle
Wofür wirst du das verwenden? Wenn wir wissen, was Sie erreichen möchten, ist es einfacher zu beantworten.
AttackingHobo
Wenn Sie genau dieselbe Form "replizieren" möchten, klonen Sie sie einfach oder erstellen Sie eine neue Instanz davon.
Bummzack
OK ... hier ist, was ich versuche zu tun ... Ich verwende Box2D und füge Sprites oder Movieclips als "Skin" des Box2D-Objekts ein. Zuvor habe ich eine Kombination von primitiven Box2D-Formen erstellt, die dem Sprite ähnelten, aber nie zufriedenstellend waren, da das Sprite keine reguläre Form hatte. Einige Teile waren krank, die nicht über der zugrunde liegenden Box2D-Form lagen. Daher wollte ich eine Möglichkeit, die Form des Sprites programmgesteuert zu replizieren und eine Box2D-Form zu erstellen, die der Form des Sprites ähnelt, damit die Kollisionen realistisch aussehen und keine Sprites wie im vorherigen Fall überlappen.
Astromaz3

Antworten:

3

Wenn ich Ihren Kommentar richtig interpretiert habe, möchten Sie: Sprites in Flash beliebig formen und die Form dieser Sprites automatisch extrahieren, um sie als Kollisionsformen in Box2d zu verwenden

In der Regel sind Kollisionsformen viel einfachere Formen als das grafische Element, das sie darstellen (Leistung). Ein sehr detailliertes 3D-Modell kann nur durch einen abgeschrägten Zylinder dargestellt werden.

Einige physische Körper können automatisch durch Algorithmen erstellt werden, aber es ist auch üblich, sie manuell zu zeichnen / modellieren. Wenn Sie nicht über eine große Anzahl unterschiedlich geformter Sprites verfügen, lohnt es sich höchstwahrscheinlich nicht, einen Algorithmus zu implementieren, der Formen für Sie extrahiert.

Wenn Sie sich das folgende Bild ansehen, können Sie sehen, dass eine sehr komplexe Form durch einige Kreise und einfache Polygone dargestellt werden kann (muss konvex sein!). Das manuelle Zeichnen dieser Formen ist (höchstwahrscheinlich) jedem Algorithmus überlegen, den Sie entwickeln können.

Kollisionsformen

Sie können diese Formen in einem Vektorwerkzeug wie Illustrator oder Inkscape zeichnen und in SVG exportieren, das leicht analysiert werden kann. Oder verwenden Sie Flash und exportieren Sie die Formen als FXG. Dies ist auch ein Format, das leicht analysiert werden kann.

Wenn ich Sie noch nicht überzeugt habe und Sie die Formen wirklich programmgesteuert aus Ihren Sprites erstellen möchten, sind hier zwei Ansätze, die möglicherweise funktionieren.

  1. Rendern Sie das Sprite in eine Bitmap (mit BitmapData.draw ) und führen Sie eine Vektorisierung auf dem Alphakanal durch. Wenn die resultierende Form konkav ist, triangulieren Sie sie.
  2. Verwenden Sie die as3swf- Bibliothek, um eine vorhandene SWF-Datei in Flash zu analysieren. Von dort können Sie Forminformationen extrahieren. Ihr Hauptproblem hierbei wird sein: Finden der Form (en), die den Umriss Ihres Objekts bilden. Konvertieren Sie diese Form in konvexe Polygone.
bummzack
quelle
3

"Flash" speichert alle Informationen des Films oder Videospiels in einem eigenen Format. Die Daten werden in einem Vektorformat gespeichert. Dies ist ein Format mit einer mathematischen Definition. Dies ist der Hauptunterschied bei Bitmaps, da Sie das Bild ohne Datenverlust skalieren können.

Sie können auf die SWF-Datei zugreifen. Hier finden Sie die Spezifikation http://www.adobe.com/devnet/swf.html. Außerdem können Sie die Movieclips, Formen, Koordinaten usw. analysieren. Da das SWF-Format sehr groß ist, können Sie es verwenden Den Code des SWFRIP-Projekts finden Sie unter http://sourceforge.net/projects/swfrip/. Dort erfahren Sie, wie Sie eine SWF-Datei analysieren können.

Mit etwas Geduld können Sie die gewünschten Daten erhalten.

Momboco
quelle