Sie haben also über eine großartige Flash-Bibliothek, Engine oder API gelesen und möchten diese in Ihrem eigenen Projekt verwenden. Du lädst es herunter? Es handelt sich jedoch entweder um eine seltsame Datei, die Sie nicht kennen (eine SWC), oder um eine Million Ordner mit AS-Dateien - nichts, was "Doppelklick zur Installation" sagt. Was zum Teufel?
Eine Bibliothek ist nur eine Sammlung von ActionScript-Klassen, die so konzipiert wurde, dass sie nicht an ein bestimmtes Projekt gebunden sind und in jedem Gebäude verwendet werden können. Diese Klassendateien können in einer einzigen SWC-Datei zusammengefasst werden, die wie eine ZIP-Datei ist.
Ich werde Keith Peters 'exzellente MinimalComps als Beispiel verwenden, da er sowohl im SWC- als auch im Ordnerformat verfügbar ist. Gleiches gilt jedoch für alle AS3-Bibliotheken, APIs und Engines. Einige andere großartige Beispiele sind Box2DFlash und die Greensock Tweening Platform.
Beginnen wir mit einem Blick darauf, was zu tun ist, wenn Sie die ZIP-Datei öffnen und mit den rohen Klassendateien konfrontiert werden:
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 Ihrem Projekt auf diese Klassen zugreifen können, aber Sie benötigen auch die Klassen, um auf einander zugreifen zu können, da viele von ihnen höchstwahrscheinlich von anderen Klassen in der Bibliothek erben oder daraus bestehen. Das bedeutet, dass Sie nicht einfach ein paar der Klassen packen, sie in Ihren Projektordner extrahieren und davon ausgehen können, dass sie funktionieren.
Öffnen Sie eine der Dateien und sehen Sie sich die Datei an Paket
Erklärung. Zum Beispiel in der minimalcomps-Zip in der Datei /src/com/bit101/components/Accordion.as
, Die Paketdeklaration lautet:
Paket com.bit101.components
Sehen Sie, wie dies der Ordnerstruktur entspricht? / src /com / bit101 / komponenten/Accordion.as
. (Und die Klasse in der Datei wird aufgerufen Akkordeon
.)
Es ist nicht nur Keith Peters ordentlich und ordentlich. Wenn Sie eine Zeile wie folgt eingeben:
import com.bit101.components.Accordion;
? Flash sucht nach einer Datei mit dem Namen Accordion.as
in der Ordnerstruktur / de / bit101 / components /
. Das Paket muss mit der Ordnerstruktur übereinstimmen, damit Flash die Datei finden kann. wenn du umgezogen bist Accordion.as
in einen anderen Ordner wie / de / bit101 / charts /
, und versuchte zu tun:
import com.bit101.charts.Accordion;
? Sie erhalten eine Fehlermeldung:
5001: Der Name des Pakets 'com.bit101.components' gibt nicht den Speicherort dieser Datei an. Bitte ändern Sie den Namen der Paketdefinition in dieser Datei oder verschieben Sie die Datei.
Macht Sinn. Das Paket der Klasse sagt Ihnen also, welcher Ordner der Stammordner der Bibliothek ist. Es ist das erste Wort vor dem ersten Punkt im Paketnamen -- com
in diesem Fall. Das heißt, Sie sollten das verschieben / com /
Ordner und aller seiner Unterordner in das Hauptcode-Verzeichnis Ihres Projekts.
Spitze: Sie werden oft feststellen, dass der Stammordner für die Bibliothek aufgerufen wird / com /
oder /Netz/
oder / org /
, weil es eine übliche Konvention ist, Ihren Domänennamen (umgekehrt) als Paketstruktur zu verwenden. Zum Beispiel sind wir http://active.tutsplus.com
Wenn wir also eine Bibliothek freigeben, würde das Paket beginnen com.tutsplus.active
. Wenn sich jeder an seinen eigenen Domainnamen hält, besteht keine Sorge, dass jemand versehentlich eine Bibliothek mit denselben Paketnamen erstellt wie die Bibliothek eines anderen Benutzers. Dies ist jedoch keine universelle Konvention; Weder Box2D noch die Greensock-Bibliotheken verwenden es.
Das Hauptcodeverzeichnis ist der Begriff, den ich für den Ordner verwende, in dem Flash nach Ihren AS-Dateien (und Ordnern mit AS-Dateien) sucht..
Wenn Sie Flash Professional verwenden, ist dies standardmäßig der Ordner, in dem sich Ihre FLA befindet. Sie können dies jedoch ändern. siehe Daniel Apt's Quick Tip, So organisieren Sie Ihre Flash-Projektdateien
, Für mehr Information.
Wenn Sie einen anderen Flash-Editor verwenden, könnte der Ordner irgendetwas heißen. Wahrscheinlich gibt es einen Ordner mit dem Namen / src /
oder /Quelle/
oder /Code/
oder etwas ähnliches, damit du es herausfinden kannst. (Wenn alles andere fehlschlägt, erstellen Sie einfach eine neue AS-Datei und sehen Sie sich den Standardspeicherort an.)
Probieren Sie es aus - laden Sie MinimalComps herunter, extrahieren Sie die ZIP-Datei und kopieren Sie den richtigen Ordner in das Hauptcode-Verzeichnis Ihres Projekts. Dann, import com.bit101.components.Accordion;
und erstellen Sie ein neues Akkordeon ()
irgendwo in deinem Projekt. Wenn Sie keine Fehlermeldung sehen, haben Sie es richtig gemacht!
Was wäre, wenn Sie eine Bibliothek so nützlich finden, dass sie standardmäßig für alle Ihre Projekte verfügbar ist, ohne dass Sie den Stammordner kopieren und in das Hauptcode-Verzeichnis jedes neuen Projekts einfügen müssen?
Dafür können Sie verwenden globale Klassenpfade. Wenn Sie einen Ordner auf Ihrer Festplatte als globalen Klassenpfad angeben, weisen Sie Flash an, dort immer nach Klassen zu suchen, ebenso gut wie im Hauptcode-Verzeichnis des Projekts.
Angenommen, Sie erstellen ein Verzeichnis C: \ FlashLibraries \
(Mac-Benutzer: Denken Sie nach Macintosh HD / FlashLibraries
stattdessen) mit einem Unterverzeichnis MinimalComps
, und kopiere die / com /
Ordner aus der MinimalComps-Zip zu diesem MinimalComps
Verzeichnis. Die Akkordeon-Klassendatei wäre um C: \ FlashLibraries \ MinimalComps \ com \ bit101 \ components \ Accordion.as
. Sie könnten dann einstellen C: \ FlashLibraries \ MinimalComps \
Als globaler Klassenpfad kann jedes Flash-Projekt, das Sie geöffnet haben, ausgeführt werden:
import com.bit101.components.Accordion;
? 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 ausgefüllt, die Sie verwenden nicht benutzen.
Sie können sogar alle Stammcode-Klassen aller Bibliotheken in den gleichen globalen Klassenpfad extrahieren - d. H C: \ FlashLibraries \
als globaler Klassenpfad und kopieren Sie dann die / com /
Ordner aus dem MinimalComps-Ordner in diesen Ordner, die Accordion-Klasse wäre also C: \ FlashLibraries \ com \ bit101 \ components \ Accordion.as
. (Dies ist jedoch wahrscheinlich nicht die Mühe wert; wenn Sie unsere imaginäre Activetuts + -Bibliothek herunterladen, würde sie sich darin befinden C: \ FlashLibraries \ com \ tutsplus \ active \
, was bedeutet, dass die / com /
Ordner würde beides enthalten / bit101 /
Ordner und a / tutsplus /
Mappe. Das ist kein Problem, aber es wird unordentlich und kann das Löschen einer einzelnen Bibliothek sehr schwierig machen.)
Klicken Sie in Flash CS3 auf Bearbeiten | Einstellungen, Klicken Sie dann auf ActionScript Kategorie und wählen Sie ActionScript 3.0-Einstellungen. Sie sehen eine Liste von Ordnern. Klicken Sie auf das Pluszeichen, um ein neues hinzuzufügen. Sie können den Ort eingeben oder auf das Ziel drücken, um zu diesem zu navigieren.
In späteren Versionen von Flash Professional gibt es noch etwas mehr. Klicken Bearbeiten | Einstellungen, dann wählen Sie die ActionScript Kategorie und klicken Sie auf ActionScript 3.0-Einstellungen wie vorher. Das Anmeldeformular ist etwas anders:
Verwenden Sie diesmal die Quellpfad Abschnitt, 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 anderer Stelle. Wählen Sie beispielsweise in FlashDevelop Projekt | Eigenschaften, dann ist die Klassenpfade Registerkarte und klicken Sie auf Bearbeiten Sie globale Klassenpfade? .
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 in Ihrem neuesten Projekt verwenden. Wenn Sie jedoch eines Ihrer älteren Projekte öffnen - eines, das die vorherige Version der Bibliothek verwendet hat -, werden Sie auf alle Arten von Inkompatibilitätsproblemen stoßen.
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 geöffnet haben, erstellen Sie einen neuen globalen Klassenpfad als Ordner für die Version der Bibliothek, die Ihr Projekt benötigt, und löscht alle anderen.
Das funktioniert, aber es ist ein schrecklicher Workflow. Stattdessen können Sie einen Klassenpfad festlegen, der für ein Projekt spezifisch ist.
Klicken Sie in Flash Professional CS3 und höher auf, sobald Sie eine FLA geöffnet haben Datei | Einstellungen veröffentlichen, dann wählen Sie die Blitz Registerkarte und klicken Sie auf die Einstellungen neben an ActionScript 3.0. In Flash CS3 sieht das Dialogfeld folgendermaßen aus:
Genau wie beim Festlegen eines globalen Klassenpfads können Sie mit der Plus-Schaltfläche einen neuen Eintrag hinzufügen und das Zielsymbol zum Durchsuchen eines Ordners verwenden. In späteren Versionen von Flash enthält der Dialog mehr:
Sorgen Sie sich nicht um die anderen Registerkarten; benutze einfach die Quellpfad Tab, 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 ist die Klassenpfade Registerkarte und klicken Sie auf Klassenpfad hinzufügen? .
Stellen Sie sich vor, Sie bauen ein Flash-Spiel, das leicht unterschiedliche Versionen für verschiedene Spielportale und einen separaten Level-Editor hat. Ihre Ordnerstruktur könnte so aussehen:
C: \ MyAwesomeGame \ game_core \ C: \ MyAwesomeGame \ game_kongregate \ C: \ MyAwesomeGame \ game_newgrounds \ C: \ MyAwesomeGame \ levelEditor \
Angenommen, Sie möchten MinimalComps in allen Versionen Ihres Spiels verwenden, und in Ihrem Level-Editor - nicht irgendeine alte Version von MinimalComps, sondern speziell die neueste Version in jedem Projekt. Inzwischen haben Sie ein anderes Projekt, das mit einer alten Version von MinimalComps geschrieben wurde. Sie möchten also keinen globalen Klassenpfad verwenden.
Sie können einen neuen Ordner in Ihrem Basis-Spielordner erstellen:
C: \ MyAwesomeGame \ Bibliotheken \
? Kopieren Sie dann den Stammordner der Bibliothek direkt in diesen Ordner, damit die Akkordeon-Klasse auf steht C: \ MyAwesomeGame \ libraries \ com \ bit101 \ components \ Accordion.as
.
Nun wissen Sie, dass Sie in jeder der verschiedenen Spielversionen einen Klassenpfad auf Projekt- oder Dokumentebene und den Ebeneneditor festlegen können C: \ MyAwesomeGame \ Bibliotheken \
, Was aber, wenn Sie alle Spieldateien mit jemandem teilen müssen - vielleicht mit einem ganzen Team? Sie müssen entweder sicherstellen, dass ihre Ordnerstruktur genau mit Ihrer übereinstimmt, oder Sie gehen jedes Projekt durch und ändern die Klassenpfade so, dass sie mit ihrem Computer übereinstimmen, sobald sie die neueste Version erhalten. Was für ein Schmerz!
Stattdessen können Sie eine relativer Klassenpfad. Angenommen, das Hauptcode-Verzeichnis des Level-Editors lautet /Level-Editor/
, dann, wenn Sie einen Klassenpfad von festlegen ? / Bibliotheken /
Es wird im richtigen Ordner gesucht. Warum? weil ? /
bedeutet "das Verzeichnis über dem aktuellen".
Das bedeutet, dass Sie verwenden können ? / Bibliotheken /
für alle Versionen Ihres Spiels, und alle zeigen auf dasselbe Verzeichnis. Wenn Sie dann den Code mit Ihren Teamkollegen teilen, können Sie ihnen das gesamte Kennwort mitteilen / MyAwesomeGame /
Ordner und es wird enthalten alles Sie brauchen. Es gibt weniger für Sie zu beachten - Sie müssen weder die Klassenpfade ändern, noch müssen Sie jede neue Version der Bibliothek in die verschiedenen Ordner kopieren -, und es besteht weniger Gefahr, dass ein einfacher Fehler auftritt. Großartig!
(Sie könnten dies noch weiter ausführen und den gesamten Code, den die verschiedenen Versionen des Spiels gemeinsam nutzen, in den Ordner einfügen C: \ MyAwesomeGame \ shared \
? aber das ist weg vom thema dieses artikels!)
Sie können das Besondere verschachteln ? /
Verzeichnis auch: ? /? /
geht zwei Verzeichnisse statt nur eines, und so weiter. Sie können auch verwenden ./
auf "das aktuelle Verzeichnis" verweisen.
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 zum Beispiel erklärt, wie Sie in Flash Professional erstellte Bibliotheksassets als SWC exportieren, damit sie in einem anderen Workflow verwendet werden können. Mit rein codebasierten Klassen können Sie dasselbe tun.
Ich werde hier nicht erklären, wie man eine solche SWC erstellt, aber ich werde die zwei Hauptvorteile für Entwickler von Bibliotheken erläutern:
Sie haben immer noch die Wahl, die SWC-Bibliothek in einem einzigen Projekt, in allen Ihren Projekten zu verwenden oder von einigen wenigen gemeinsam zu nutzen, obwohl die Möglichkeiten, sie in Ihre Projekte aufzunehmen, etwas anders sind als bei den eigentlichen Klassendateien.
Bei der Verwendung von SWC-Bibliotheken gelten für Flash Professional CS3 einige Einschränkungen: Es können keine SWCs verwendet werden, die lediglich eine Sammlung von Klassendateien darstellen. Wenn die SWC enthält Komponenten, Sie können es zu Ihrem verschieben / Komponenten /
Verzeichnis auf Ihrer Festplatte, und ziehen Sie es (innerhalb von Flash) aus dem Bedienfeld Komponenten in Ihre Bibliothek oder Bühne. Dieses Verzeichnis befindet sich unter C: \ Programme \ Adobe \ Adobe Flash CS3 \Sprache\ Konfiguration \ Komponenten \
standardmäßig in Windows und Macintosh HD / Anwendungen / Adobe Flash CS3 / Konfiguration / Komponenten
standardmäßig unter Mac OS X.
Sie können SWC-Komponenten in die entsprechenden Ordner in Flash Professional CS4 + kopieren, wenn Sie über das Bedienfeld „Komponenten“ auf sie zugreifen möchten. Für SWCs, die aus Code-Klassen bestehen, können Sie sie auch als globalen Klassenpfad oder Dokumentpfad oder Klassenpfad auf Projektebene festlegen.
Klicken Sie auf, um einen globalen Klassenpfad festzulegen Bearbeiten | Einstellungen, dann wählen Sie die ActionScript Kategorie und klicken Sie auf ActionScript 3.0-Einstellungen wie vorher. Sie sehen diesen Dialog:
Fügen Sie die Speicherorte Ihrer SWCs zum hinzu Bibliothekspfad. Wie der Dialog vorschlägt, können Sie mehrere SWCs in demselben Ordner ablegen und einfach auf diesen Ordner zeigen.
(Das Externer Bibliothekspfad Mit box können SWC-Bibliotheken angegeben werden, die zur Laufzeit geladen werden sollen, und nicht, wenn die Komponente kompiliert wird. Wenn für Ihre Projekte sehr viel Code und Ressourcen zur Verfügung stehen, können Sie die Ladezeit für Ihre Benutzer verkürzen, indem Sie alle freigegebenen Ressourcen in eine SWC-Datei packen und als externe Bibliothek verwenden. Benutzer müssen es dann nur einmal herunterladen und können es dann in jedem Ihrer anderen Projekte verwenden. Dies ist wahrscheinlich nicht das, was Sie mit Bibliotheken tun möchten, die Sie heruntergeladen haben!)
Um eine SWC auf Dokumentebene in Flash Pro CS4 und höher festzulegen, klicken Sie auf, sobald Sie eine FLA geöffnet haben Datei | Einstellungen veröffentlichen, dann wählen Sie die Blitz Registerkarte und klicken Sie auf die Einstellungen neben an ActionScript 3.0. Wechseln Sie zu Bibliothekspfad Tab. Der Dialog sieht so aus:
Sie können hier relative Pfade verwenden, genau wie wenn Sie die einzelnen Klassendateien haben.
In verschiedenen Entwicklungsumgebungen gibt es unterschiedliche Möglichkeiten, SWCs zu importieren. Informationen zur Verwendung von SWCs in FlashDevelop finden Sie in meinem Handbuch.
Ich hoffe das hilft! Wenn nun in einem Tutorial "Diese Bibliothek herunterladen" angezeigt wird, sollten Sie genau wissen, was zu tun ist :) Lassen Sie mich wissen, wenn etwas unklar ist, und ich kläre das für Sie auf.