15.10.2012 Views

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ACTIONSCRIPT 3.0 ENTWICKLERHANDBUCH<br />

Verwenden von Bitmaps<br />

Laden externer Bilder als Bitmap-Daten<br />

Flash Player 9 und höher, Adobe AIR 1.0 und höher<br />

Die erste Teilaufgabe in diesem Beispiel ist das Laden einer externen Bilddatei, die in diesem Fall ein Foto der<br />

Mondoberfläche ist. Der Ladevorgang wird mit zwei Methoden der MoonSphere-Klasse durchgeführt: dem<br />

MoonSphere()-Konstruktor, mit dem der Ladevorgang eingeleitet wird, und der imageLoadComplete()-Methode,<br />

die aufgerufen wird, wenn das externe Bild vollständig geladen wurde.<br />

Das Laden externer Bilder entspricht dem Laden externer SWF-Dateien. In beiden Fällen wird zum Durchführen des<br />

Ladevorgangs eine Instanz der flash.display.Loader-Klasse verwendet. Der Code in der MoonSphere()-Methode, mit<br />

dem das Laden des Bilds gestartet wird, lautet wie folgt:<br />

var imageLoader:Loader = new Loader();<br />

imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoadComplete);<br />

imageLoader.load(new URLRequest("moonMap.png"));<br />

In der ersten Zeile wird die Loader-Instanz mit dem Namen imageLoader deklariert. In der dritten Zeile wird dann<br />

der Ladevorgang tatsächlich gestartet, indem die load()-Methode des Loader-Objekts aufgerufen und eine<br />

URLRequest-Instanz übergeben wird, die die URL des zu ladenden Bilds enthält. In der zweiten Zeile wird der<br />

Ereignis-Listener festgelegt, der ausgelöst wird, wenn das Bild vollständig geladen wurde. Beachten Sie, dass die<br />

addEventListener()-Methode nicht für die Loader-Instanz selbst aufgerufen wird, sondern für die<br />

contentLoaderInfo-Eigenschaft des Loader-Objekts. Die Loader-Instanz selbst löst keine Ereignisse aus, die sich auf<br />

die zu ladenden Inhalte beziehen. Die contentLoaderInfo-Eigenschaft der Instanz enthält jedoch einen Verweis auf<br />

das LoaderInfo-Objekt, das den in das Loader-Objekt zu ladenden Inhalten zugeordnet ist (in diesem Fall das externe<br />

Bild). Dieses LoaderInfo-Objekt enthält mehrere Ereignisse mit Bezug auf den Fortschritt und den Abschluss des<br />

Ladevorgangs externer Inhalte, u. a. das complete-Ereignis (Event.COMPLETE), das einen Aufruf der<br />

imageLoadComplete()-Methode auslöst, wenn das Bild vollständig geladen wurde.<br />

Während das Starten des Ladens externer Bilder einen wichtigen Teil des Gesamtvorgangs darstellt, ist es genau so<br />

wichtig, sich über die folgenden Schritte im Klaren zu sein, nachdem das Laden abgeschlossen ist. Wie im zuvor<br />

abgebildeten Code dargestellt, wird die imageLoadComplete()-Funktion aufgerufen, wenn das Bild vollständig<br />

geladen ist. In dieser Funktion erfolgen verschiedene Manipulationen der geladenen Bilddaten, die in den folgenden<br />

Abschnitten beschrieben werden. Zum Verwenden der Bilddaten muss jedoch zunächst auf sie zugegriffen werden.<br />

Beim Verwenden eines Loader-Objekts zum Laden eines externen Bilds wird das geladene Bild zu einer Bitmap-<br />

Instanz, die dem Loader-Objekt als untergeordnetes Anzeigeobjekt zugeordnet wird. In diesem Fall steht die Loader-<br />

Instanz in der Ereignis-Listener-Methode als Teil des Ereignisobjekts zur Verfügung, das der Methode als Parameter<br />

übergeben wird. Es folgen die ersten Zeilen der imageLoadComplete()-Methode:<br />

private function imageLoadComplete(event:Event):void<br />

{<br />

textureMap = event.target.content.bitmapData;<br />

...<br />

}<br />

Beachten Sie, dass der Ereignisobjektparameter die Bezeichnung event trägt und eine Instanz der Event-Klasse ist.<br />

Jede Instanz der Event-Klasse hat eine target-Eigenschaft, die auf das Objekt verweist, das das Ereignis ausgelöst hat<br />

(in diesem Fall die LoaderInfo-Instanz, für die wie zuvor beschrieben die addEventListener()-Methode aufgerufen<br />

wurde). Das LoaderInfo-Objekt hat wiederum eine content-Eigenschaft, die (nach Abschluss des Ladevorgangs) die<br />

Bitmap-Instanz mit dem geladenen Bitmapbild enthält. Wenn Sie das Bild direkt auf dem Bildschirm anzeigen<br />

möchten, können Sie diese Bitmap-Instanz (event.target.content) einem Anzeigeobjektcontainer zuweisen. (Sie<br />

können auch das Loader-Objekt einem Anzeigeobjektcontainer zuweisen). In diesem Beispiel werden die geladenen<br />

Letzte Aktualisierung 27.6.2012<br />

271

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!