Den Game Maker benutzen
Auf Variablen anderer Instanzen zugreifen
Wie früher beschrieben, kann man Variablen der derzeitigen Instanz verändern, indem man Statements wie folgendes benutzt:x = 3;
Aber in manche Fällen will man auf Variablen anderer Instanzen zugreifen. Beispielsweise könntest du die Bewegung aller Bälle stoppen, den Haupt Charakter auf eine bestimmte Position bringen oder, im Falle einer Kollision, das Sprite der anderen Instanz ändern. Das kann dadurch erreicht werden, indem man vor den Variablennamen den Namen des Objektes und einen Punkt schreibt. Also kann man z.B. schreiben:
ball.speed = 0;
Das würde die Geschwindigkeit aller Bälle ändern. Es gibt einige Spezial-"Objekte".
- self: Die derzeitige Instanz, für die alle Actions ausgeführt werden
- other: Die andere, in einer Kollision verwickelte Instanz
- all: Alle Instanzen
- noone: Keine Instanz (klingt vielleicht seltsam, aber später wird es gebraucht)
- global: Keine Wirkliche Instanz, aber ein Container, der Variablen hält
other.sprite_index = sprite5;
all.speed = 0;
global.message = 'Ein gutes Ergebnis';
global.x = ball.x;
Jetzt könntest du dich fragen, was bei der letzten Zuweisung passiert, wenn es mehrere Bälle gibt. Es wird einfach der erste genommen und dessen x-Wert wird der globalen Variable zugewiesen.
Aber was ist, wenn man die Geschwindigkeit eines bestimmten Balls, anstatt aller Bälle verändern will? Das ist etwas komplizierter. Jede Instanz hat ihre eigene Id. Wenn du im Room-Editor Instanzen platzierst, wird die Id der Instanz, über der sich der Mauszeiger befindet, angezeigt. Die IDs sind Zahlen, die größer oder gleich 100000 sind. So eine Nummer kann links des Punktes verwendet werden, aber Vorsicht der Punkt wird als Dezimalpunkt interpretiert werden, deshalb musst du Klammern um die Id setzen. Beispielsweise könnte die Id eines Balles 100032 sein, dann könntest du folgendes schreiben:
(100032).speed = 0;
Wenn du während der Laufzeit Instanz erstellst, dann gibt die Funktion die Id des Objektes zurück, deshalb kann man schreiben:
{
nnn = instance_create(100,100,ball);
nnn.speed = 8;
}
Das erschafft einen Ball und setzt seine Geschwindigkeit. Beachte, dass wir die Id einer Variablen zugewiesen haben und diese dann links des Punktes geschrieben haben. Das ist erlaubt und funktioniert. Auch das folgende Programm ist richtig:
{
obj[0] = ball;
obj[1] = schlaeger;
obj[0].alarm[4] = 12;
obj[1].id.x = 12;
}
Das letzte Statement sollte wie folgt gelesen werden. Wir nehmen die Id des ersten Schlägers und weisen dessen x Variable den Wert 12 zu.
Objektnamen, die speziellen Objekte und Ids können außerdem in einigen Funktionen benutzt werden. Sie werden wie Konstanten behandelt.
Alternative Versionen
Auch verfügbar in:
Download helpfile