13.5 Objekte
Bei Ihren ersten Schritten in die objektorientierte Welt benötigen Sie unter anderem das Handwerkszeug, sich diese Welt zu erschaffen. Denn von alleine besitzt Flash nur eine recht übersichtliche Menge an Objekten.
Hier klicken, um das Bild zu Vergrößern
Abbildung 13.5
Movieclip-Instanzen auf der Bühne (hier bei der Macintosh-Version von Flash MX)
Movieclips erzeugen
Zu den bekannten Objekten gehören die bereits erwähnten Movieclips. Eine Welt aus Movieclips erzeugen Sie, indem Sie Movieclip-Instanzen in Ihrem Film auf der Bühne platzieren. Diese »Geburt« einer Instanz kann auf verschiedene Arten erfolgen. Bereits in der Entwicklungsumgebung dürfen Sie
|
das Symbol mit gedrückter Maustaste von der Bibliothek auf die Bühne ziehen |
|
oder eine bereits vorhandene Instanz duplizieren. |
Bezeichner
In beiden Fällen erhalten die Movieclip-Instanzen zur Laufzeit automatisch einen Bezeichner in der Form »instance1«, »instance2« usw. – außer wenn Sie direkt im Eigenschaften-Inspektor innerhalb des Feldes Instanzname einen eigenen Bezeichner eintragen. Dieser Bezeichner ist eine Art Platzhalter für die Instanz – sozusagen ihr Name!
Instanz erzeugen
ActionScript_bietet_ebenfalls_verschiedene_Wege,_um_eine_Instanz_zu_erzeugen:
|
Verwenden Sie zur Laufzeit den Befehl attachMovie, falls das Movieclip-Symbol verknüpft ist (diese Verknüpfung legen Sie in der Bibliothek fest). |
|
Klonen Sie bereits exisierende Instanzen zur Laufzeit durch den Befehl duplicateMovieClip. |
|
Setzen Sie den erst mit Flash MX eingeführten Befehl createEmptyMovieClip ein, um eine leere Instanz der Movieclip-Klasse zu erzeugen. |
Hier klicken, um das Bild zu Vergrößern
Abbildung 13.6
ActionScript zur Erzeugung von Instanzen (hier bei der Macintosh-Version von Flash MX)
// Erzeuge Freundin
movieclip.fla
_root.attachMovie("freundin", "meineFreundin", 1);
meineFreundin._x=175;
meineFreundin._y=275;
meineFreundin._rotation=-45;
// Klone Freundin
meineFreundin.duplicateMovieClip("deineFreundin", 2);
deineFreundin._x=275;
deineFreundin._y=250;
Globale Objekte
Neben den für Nichtprogrammierer zugänglichen Movieclips verfügt ActionScript über eine Reihe globaler Objekte, die fein säuberlich sortiert im ActionScript-Editor aufgelistet sind. Dazu zählen unter anderem
|
das Math-Objekt (für mathematische Operationen), |
|
das Stage-Objekt (Eigenschaften und Fähigkeiten der Bühne) und |
|
das Mouse-Objekt (Fähigkeiten des Mauszeigers). |
Diese Objekte existieren bereits und müssen somit auch nicht extra erzeugt werden. Da es sich außerdem um globale Objekte handelt, reicht die Angabe des Namens, um auf sie zuzugreifen. Das folgende Beispiel verwendet einen Movieclip als Mauszeiger und dreht diesen selbst definierten Mauszeiger immer zur Bühnenmitte:
// Zeige Bühne immer in 100 Prozent an
Stage.scaleMode = "noScale";
// Reduziere das Kontextmenü
Stage.showMenu = false;
// Verstecke Mauszeiger
Mouse.hide();
mcMonster.onEnterFrame=function () {
// Setze Objekt auf die Mausposition
this._x=_root._xmouse;
this._y=_root._ymouse;
// Drehe Objekt bzgl. Punkt (225, 200)
var grad=Math.atan2(200-this._y, 225-this._x)/Math.PI*180;
this._rotation=grad;
}
Die globalen Objekte zeichnen sich dadurch aus, dass es immer nur ein Vorkommen von ihnen gibt. Dies macht auch Sinn, da ohnehin nur ein Satz an mathematischen Funktionen, eine Bühne und genau ein Mauszeiger existieren.
Klassen für Objekte
Daneben bietet ActionScript aber ganze Klassen für Objekte. Ein Beispiel haben Sie mit den Movieclips bereits kennen gelernt. Weitere sind zum Beispiel Sound (für die Klangsteuerung), Color (für die Farbsteuerung) und Array (Listen und Felder zur Verwaltung von Werten). Das folgende Skript erzeugt mit Hilfe des new-Operators eine Sound-Instanz und lädt anschließend eine MP3-Datei. Die Verwendung von Methoden und Eigenschaften gestaltet sich dabei ganz ähnlich zu Movieclips:
meinSound=new Sound();
sound.fla
meinSound.loadSound("http://www.meinserver.de/meinsound.mp3", true);
Die Instanz ist nicht sichtbar
Für eher grafisch orientierte Entwickler ist es häufig gewöhnungsbedürftig, dass sie eine Instanz, die kein Movieclip ist, nicht in ihrem Projekt sehen. Trotzdem ist diese Instanz aber da, auch wenn sie nur im Arbeitsspeicher und nicht auf dem Bildschirm existiert. Wenn es Ihnen hilft, dann stellen Sie sich eine Instanz wie einen leeren Movieclip vor.
|