Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Workflow

Wie man eine externe Bibliothek in Ihren Flash-Projekten verwendet

Read Time:11 minsLanguages:
This post is part of a series called GreenSock Tweening Platform.

German (Deutsch) translation by Alex Grigorovich (you can also view the original English article)

Sie haben also über eine großartige Flash-Bibliothek, Engine oder API gelesen und möchten sie in Ihrem eigenen Projekt verwenden. Sie laden es herunter... aber es ist entweder eine seltsame Datei, die Sie nicht verwenden können (eine SWC), oder eine Million Ordner mit AS-Dateien - nichts, was "Doppelklick, um mich zu installieren" sagt. Zum Teufel?

Eine Bibliothek ist nur eine Sammlung von ActionScript-Klassen, die so konzipiert wurden, dass sie nicht an ein Projekt gebunden sind und für alles verwendet werden können, was Sie erstellen. Diese Klassendateien können in einer einzigen SWC-Datei gebündelt werden, die einer Zip-Datei ähnelt.

Ich werde Keith Peters exzellente MinimalComps als Beispiel verwenden, da sie sowohl im SWC- als auch im Ordnerformat verfügbar sind. Gleiches gilt jedoch für alle AS3-Bibliotheken, APIs und Engines. Einige andere gute Beispiele sind Box2DFlash und die Greensock Tweening Platform.

Schauen wir uns zunächst an, was zu tun ist, wenn Sie die Zip-Datei öffnen und mit den unformatierten Klassendateien konfrontiert werden:


Eine Million Ordner mit AS-Dateien

Wie Sie wissen, enthält jede AS-Datei eine Klasse (okay, sie enthält möglicherweise mehrere Klassen oder eine Schnittstelle, aber arbeiten Sie hier mit mir zusammen). Sie müssen in der Lage sein, von Ihrem Projekt aus auf diese Klassen zuzugreifen, aber Sie müssen auch auf die Klassen zugreifen können, da viele von ihnen mit ziemlicher Sicherheit von anderen Klassen in der Bibliothek erben oder aus diesen bestehen. Das bedeutet, dass Sie nicht einfach einige der Klassen abrufen, sie in Ihren Projektordner extrahieren und erwarten können, dass sie funktionieren.

Öffnen Sie eine der Dateien und sehen Sie sich die package-Deklaration an. In der Minimalcomps-Zip-Datei in der Datei /src/com/bit101/components/Accordion.as lautet die Paketdeklaration beispielsweise:

Sehen Sie, wie dies der Ordnerstruktur entspricht? /src/com/bit101/components/Accordion.as. (Und die Klasse in der Datei heißt Accordion.)

Es ist nicht nur Keith Peters, der deutlich und ordentlich ist. Wenn Sie eine Zeile eingeben:

...Flash sucht in der Ordnerstruktur /com/bit101/components/ nach einer Datei namens Accordion.as. Das Paket muss mit der Ordnerstruktur übereinstimmen, damit Flash die Datei finden kann. Wenn Sie Accordion.as in einen anderen Ordner verschoben haben, z. B. /com/bit101/chart/, und versucht haben:

...Sie würden eine Fehlermeldung erhalten:

Macht Sinn. Das Paket der Klasse gibt also an, welcher Ordner der Stammordner der Bibliothek ist. Es ist das erste Wort vor dem ersten Punkt im Paketnamen - in diesem Fall com. Das bedeutet, dass Sie den Ordner /com/ und alle seine Unterordner in das Hauptcodeverzeichnis Ihres Projekts verschieben sollten.


Was ist das Hauptcodeverzeichnis?

Tipp: Sie werden häufig feststellen, dass der Stammordner für die Bibliothek /com/ oder /net/ oder /org/ heißt, da es üblich ist, Ihren Domänennamen(umgekehrt) als Paketstruktur zu verwenden. Zum Beispiel sind wir http://active.tutsplus.com. Wenn wir also eine Bibliothek freigeben würden, würde das Paket com.tutsplus.active starten. Wenn jeder an seinen eigenen Domainnamen festhält, besteht keine Sorge, dass jemand versehentlich eine Bibliothek mit denselben Paketnamen wie die Bibliothek eines anderen erstellt. Dies ist jedoch keine universelle Konvention; Weder Box2D noch die Greensock-Bibliotheken verwenden es.

Das Hauptcodeverzeichnis ist der Begriff, den ich verwende, um auf den Ordner zu verweisen, in dem Flash nach Ihren AS-Dateien sucht (und auf Ordner, die AS-Dateien enthalten).

Wenn Sie Flash Professional verwenden, ist dies standardmäßig der Ordner, in dem sich Ihre FLA befindet. Sie können dies jedoch ändern. Weitere Informationen finden Sie im Kurztipp von Daniel Apt zum Organisieren Ihrer Flash-Projektdateien.

Wenn Sie einen anderen Flash-Editor verwenden, kann der Ordner beliebig heißen - aber es wird wahrscheinlich einen Ordner namens /src/ oder /source/ oder /code/ oder ähnliches geben, damit Sie es herausfinden können. (Wenn alles andere fehlschlägt, erstellen Sie einfach eine neue AS-Datei und überprüfen Sie den Standardspeicherort.)

Probieren Sie es aus -- laden Sie MinimalComps herunter, extrahieren Sie die Zip-Datei und kopieren Sie den richtigen Ordner in das Hauptcodeverzeichnis Ihres Projekts. import com.bit101.components.Accordion; und erstellen Sie irgendwo in Ihrem Projekt ein new Accordion(). Wenn Sie keine Fehlermeldung sehen, haben Sie es richtig gemacht!


Globale Klassenpfade

Was wäre, wenn Sie eine Bibliothek so nützlich fanden, dass sie standardmäßig für alle Ihre Projekte verfügbar sein soll, ohne den Stammordner kopieren und in das Hauptcodeverzeichnis jedes neuen Projekts einfügen zu müssen?

Hierfür können Sie globale Klassenpfade verwenden. Wenn Sie einen Ordner auf Ihrer Festplatte als globalen Klassenpfad angeben, weisen Sie Flash an, dort und im Hauptcodeverzeichnis des Projekts immer nach Klassen zu suchen.

Angenommen, Sie erstellen ein Verzeichnis C:\FlashLibraries\ (Mac-Benutzer: Denken Sie stattdessen an Macintosh HD / FlashLibraries) mit einem Unterverzeichnis MinimalComps und kopieren den Ordner /com/ aus der Zip-Datei MinimalComps in dieses MinimalComps-Verzeichnis. Die Akkordeon-Klassendatei befindet sich unter C:\FlashLibraries\MinimalComps\com\bit101\components\Accordion.as. Sie können dann C:\FlashLibraries\MinimalComps\ als globalen Klassenpfad festlegen. Von da an kann jedes von Ihnen geöffnete Flash-Projekt ausgeführt werden:

...ohne Probleme. Und da Flash nur Klassen kompiliert, die tatsächlich in Ihrem Projekt verwendet werden, wird Ihre SWF-Datei nicht mit den Bibliotheken in Ihrem globalen Klassenpfad aufgefüllt, die Sie nicht verwenden.

Sie können sogar alle Stammcodeklassen aller Ihrer Bibliotheken in denselben globalen Klassenpfad extrahieren, dh Sie können C:\FlashLibraries\ als globalen Klassenpfad festlegen und dann den Ordner /com/ aus den MinimalComps in diesen Ordner kopieren Die Accordion-Klasse befindet sich also unter C:\FlashLibraries\com\bit101\components\Accordion.as. (Dies ist jedoch wahrscheinlich nicht die Mühe wert. Wenn Sie unsere imaginäre Activetuts+ -Bibliothek herunterladen, befindet sie sich in C:\FlashLibraries\com\tutsplus\active\, was bedeutet, dass der Ordner /com/ beide ein /bit101/ enthält  Ordner und ein /tutsplus/ Ordner. Das ist kein Problem, aber es wird chaotisch und kann es sehr schwierig machen, eine einzelne Bibliothek später zu löschen.)


Wie man einen globalen Klassenpfad festlegt

Klicken Sie in Flash CS3 auf Bearbeiten | Klicken Sie in den Einstellungen auf die Kategorie ActionScript und wählen Sie ActionScript 3.0-Einstellungen aus. Sie sehen eine Liste der Ordner. Klicken Sie auf das Pluszeichen, um ein neues hinzuzufügen. Sie können den Ort eingeben oder auf das Ziel drücken, um zu ihm zu navigieren.

In späteren Versionen von Flash Professional steckt noch ein bisschen mehr dahinter. Klicken Sie auf Bearbeiten | Einstellungen, wählen Sie dann die ActionScript-Kategorie aus und klicken Sie wie zuvor auf ActionScript 3.0-Einstellungen. Das Anmeldeformular ist etwas anders:

Verwenden Sie dieses Mal den Abschnitt Quellpfad, um die globalen Klassenpfade festzulegen. Verwenden Sie das Pluszeichen, um einen neuen Eintrag hinzuzufügen, und das Ordnersymbol, um zum Ordner zu navigieren.

Wenn Sie eine andere Entwicklungsumgebung verwenden, befinden sich die globalen Klassenpfadeinstellungen an einer anderen Stelle. Wählen Sie in FlashDevelop beispielsweise Projekt | aus Eigenschaften, dann die Registerkarte Klassenpfade, und klicken Sie auf Globale Klassenpfade bearbeiten....


Klassenpfade auf Projekt- oder Dokumentebene

Was tun Sie, wenn der Entwickler der Bibliothek eine neue Version veröffentlicht? Sie können es in einen globalen Klassenpfad herunterladen, die vorherige Version überschreiben und es in Ihrem neuesten Projekt verwenden. Wenn Sie jedoch eines Ihrer älteren Projekte öffnen - eines, bei dem die vorherige Version der Bibliothek verwendet wurde - treten alle möglichen Inkompatibilitätsprobleme auf.

Sie können dieses Problem lösen, indem Sie für jede Version der Bibliothek einen Ordner haben: C:\FlashLibraries\MinimalComps\v1\, C:\FlashLibraries\MinimalComps\v2\, C:\FlashLibraries\MinimalComps\v2.5\, C:\FlashLibraries\MinimalComps\v3\, ... und so weiter. Wenn Sie dann ein Projekt öffnen, erstellen Sie einen neuen globalen Klassenpfad als Ordner für die Version der Bibliothek, die Ihr Projekt benötigt, und löschen alle anderen.

Das funktioniert, aber es ist ein schrecklicher Workflow. Stattdessen können Sie einen Klassenpfad festlegen, der für ein Projekt spezifisch ist.


Wie man einen Klassenpfad auf Projekt- oder Dokumentebene festlegt

Klicken Sie in Flash Professional CS3 und höher nach dem Öffnen einer FLA auf Datei | Veröffentlichen Sie die Einstellungen, wählen Sie die Registerkarte Flash aus und klicken Sie neben ActionScript 3.0 auf Einstellungen. In Flash CS3 sieht der Dialog folgendermaßen aus:

Genau wie beim Festlegen eines globalen Klassenpfads können Sie mit der Plus-Schaltfläche einen neuen Eintrag hinzufügen und mit dem Zielsymbol zu einem Ordner navigieren. In späteren Versionen von Flash enthält der Dialog mehr:

Machen Sie Ihnen keine Sorgen über die anderen Registerkarten; verwenden Sie einfach die Registerkarte Quellpfad, um den gewünschten Klassenpfad hinzuzufügen.

Wiederum speichern verschiedene Entwicklungsumgebungen diese Einstellungen an verschiedenen Orten. Um einen Projektklassenpfad in FlashDevelop hinzuzufügen, wählen Sie Projekt | Eigenschaften, dann die Registerkarte Klassenpfade, und klicken Sie auf Klassenpfad hinzufügen....


Relative Pfade

Stellen Sie sich vor, Sie erstellen ein Flash-Spiel mit leicht unterschiedlichen Versionen für verschiedene Spielportale und einem separaten Level-Editor. Ihre Ordnerstruktur könnte folgendermaßen aussehen:

Angenommen, Sie möchten MinimalComps in allen Versionen Ihres Spiels und in Ihrem Level-Editor verwenden - nicht nur in jeder alten Version von MinimalComps, sondern speziell in der neuesten Version in jedem Projekt. In der Zwischenzeit haben Sie ein anderes Projekt, das mit einer alten Version von MinimalComps geschrieben wurde, sodass Sie keinen globalen Klassenpfad verwenden möchten.

Sie können einen neuen Ordner in Ihrem Basisspielordner erstellen:

...und kopieren Sie dann den Stammordner der Bibliothek direkt in diesen Ordner, sodass sich die Akkordeonklasse unter C:\MyAwesomeGame\library\com\bit101\components\Accordion.as befindet.

Jetzt wissen Sie, dass Sie in jeder der verschiedenen Spielversionen und im Ebeneneditor einen Klassenpfad auf Projekt- oder Dokumentebene festlegen können, um auf C:\MyAwesomeGame\library\ zu verweisen. Was ist jedoch, wenn Sie das gesamte Spiel freigeben müssen? Dateien mit jemand anderem - vielleicht ein ganzes Team? Sie müssen entweder sicherstellen, dass ihre Ordnerstruktur genau mit Ihrer übereinstimmt, oder jedes der Projekte durchgehen und die Klassenpfade jedes Mal ändern, wenn sie die neueste Version erhalten. Was für ein Schmerz!

Stattdessen können Sie einen relativen Klassenpfad verwenden. Angenommen, das Hauptcodeverzeichnis des Ebeneneditors ist /levelEditor/. Wenn Sie einen Klassenpfad von ../libraries/ festlegen, wird dieser im richtigen Ordner angezeigt. Warum? Weil ../ "das Verzeichnis über dem aktuellen" bedeutet.

Dies bedeutet, dass Sie ../libraries/ für alle Versionen Ihres Spiels verwenden können und alle auf dasselbe Verzeichnis verweisen. Wenn Sie dann den Code mit Ihren Teamkollegen teilen, können Sie ihnen den gesamten Ordner /MyAwesomeGame/ geben, der alles enthält, was sie benötigen. Sie müssen sich weniger daran erinnern, dies zu tun - Sie müssen weder die Klassenpfade ändern noch jede neue Version der Bibliothek in die verschiedenen Ordner kopieren - und es besteht daher eine viel geringere Wahrscheinlichkeit, einen einfachen Fehler zu machen. Großartig!

(Sie könnten noch weiter gehen und den gesamten Code, den die verschiedenen Versionen des Spiels gemeinsam nutzen, in den Ordner C:\MyAwesomeGame\shared\ ... legen, aber das kommt vom Thema dieses Artikels weg!)

Sie können auch das spezielle Verzeichnis ../ verschachteln: ../../ geht zwei Verzeichnisse anstatt nur eines hoch und so weiter. Sie können ./ auch verwenden, um auf "das aktuelle Verzeichnis" zu verweisen.


SWC-Dateien

Wie gesagt, eine SWC-Datei ist im Grunde eine Zip-Datei, die ActionScript-Klassen und andere solche Daten enthält. In meinem FlashDevelop-Handbuch habe ich beispielsweise erklärt, wie in Flash Professional erstellte Bibliotheksressourcen als SWC exportiert werden, damit sie in einem anderen Workflow verwendet werden können. Dasselbe ist mit rein codebasierten Klassen möglich.

Ich werde hier nicht erklären, wie eine solche SWC erstellt wird, aber ich werde die beiden Hauptvorteile für Entwickler von Bibliotheken erläutern:

  1. Die gesamte Bibliothek (einschließlich grafischer Elemente) kann in einer einzigen Datei enthalten sein.
  2. Der Inhalt der einzelnen Klassen (d. H. Der AS-Dateien) kann nicht angezeigt oder geändert werden.

Sie haben weiterhin die Wahl, die SWC-Bibliothek in einem einzelnen Projekt, in all Ihren Projekten oder für einige von ihnen gemeinsam zu nutzen, obwohl sich die Mittel zum Einfügen in Ihre Projekte geringfügig von denen der tatsächlichen Klassendateien unterscheiden.


Verwenden von SWC-Bibliotheken in Ihren Projekten

Flash Professional CS3 weist einige wichtige Einschränkungen bei der Verwendung von SWC-Bibliotheken auf: Es können keine SWCs verwendet werden, die lediglich eine Sammlung von Klassendateien sind. Wenn die SWC components enthält, können Sie sie in Ihr Verzeichnis /Components/ auf Ihrer Festplatte verschieben und dann (innerhalb von Flash) aus dem Komponentenbedienfeld in Ihre Bibliothek oder Bühne ziehen. Dieses Verzeichnis befindet sich unter Windows standardmäßig unter C:\Program Files\Adobe\Adobe Flash CS3\{language}\Configuration\Components\ und unter Mac OS X standardmäßig unter Macintosh HD / Applications / Adobe Flash CS3 / Configuration / Components.

Sie können SWC-Komponenten in die entsprechenden Ordner in Flash Professional CS4+ kopieren, wenn Sie über das Komponentenbedienfeld darauf zugreifen möchten. Für SWCs, die aus Codeklassen bestehen, können Sie sie auch als globalen Klassenpfad oder als Klassenpfad auf Dokument- oder Projektebene festlegen.

Klicken Sie auf Bearbeiten | Einstellungen, um einen globalen Klassenpfad festzulegen, wählen Sie dann die ActionScript-Kategorie aus und klicken Sie wie zuvor auf ActionScript 3.0-Einstellungen. Sie sehen diesen Dialog:

Fügen Sie die Positionen Ihrer SWCs zum Bibliothekspfad hinzu. Wie im Dialogfeld vorgeschlagen, können Sie mehrere SWCs in denselben Ordner legen und einfach auf diesen Ordner zeigen.

(Im Feld Pfad für externe Bibliotheken können Sie SWC-Bibliotheken angeben, die zur Laufzeit geladen werden sollen, anstatt wenn die Komponente kompiliert wird. Wenn Ihre Projekte große Mengen an Code und Assets gemeinsam nutzen, können Sie die Ladezeit verkürzen Für Ihre Benutzer, indem Sie alle freigegebenen Ressourcen in eine SWC-Datei einfügen und als externe Bibliothek verwenden, müssen Benutzer sie nur einmal herunterladen und können sie dann in jedem Ihrer anderen Projekte verwenden. Dies ist wahrscheinlich nicht das, was Sie mit heruntergeladenen Bibliotheken tun möchten!)

Um eine SWC auf Dokumentebene in Flash Pro CS4 und höher festzulegen, klicken Sie nach dem Öffnen einer FLA auf Datei | Veröffentlichen Sie die Einstellungen, wählen Sie die Registerkarte Flash aus und klicken Sie neben ActionScript 3.0 auf Einstellungen. Wechseln Sie zur Registerkarte Bibliothekspfad. Der Dialog sieht folgendermaßen aus:

Sie können hier relative Pfade verwenden, genau wie wenn Sie die einzelnen Klassendateien haben.

Unterschiedliche Entwicklungsumgebungen bieten unterschiedliche Möglichkeiten zum Importieren von SWCs. Informationen zur Verwendung von SWCs in FlashDevelop finden Sie in meinem Handbuch.

Ich hoffe das hilft! Wenn in einem Tutorial "Diese Bibliothek herunterladen" steht, sollten Sie genau wissen, was zu tun ist :) Lassen Sie mich wissen, wenn etwas unklar ist, und ich werde es für Sie klären.

Advertisement
Did you find this post useful?
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.