instance_create - Variablen übergeben

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • instance_create - Variablen übergeben

      Am Anfang war eine Lenk-Rakete, die stumpf ein bestimmtes Ziel verfolgen sollte. Mit war das nicht möglich. Ich brauchte eine Möglichkeit, der Rakete wenigstens eine Variable mit auf den Weg zu geben, nämlich die ID des Ziel-Objektes.

      Also ....

      Quellcode

      1. bum = instance_create (x,y,obj);
      2. bum.target = target;
      Mit dieser Methode bin ich lange Zeit ganz gut gefahren, meistens lief es dann auf so etwas ähnliches hinaus:

      Quellcode

      1. var bum;
      2. bum = instance_create (argument0,argument1,obj);
      3. bum.owner = id;
      4. bum.path = path_copy(path);
      5. with (bum)
      6. {
      7. path_shift (path,owner.x,owner.y);
      8. path_start (path,1,3,1);
      9. }
      In dem zweiten Code geht es wie man sieht nicht mehr um Lenkraketen. Aber er zeigt so in etwa den Aufbau eines etwas komplexeren "instance_create" -Code.



      Jetzt bin ich auf eine interessante Stelle in der Game-Maker Hilfe gestoßen:


      Beachte das in den Statements die angegebene Instanz die self-Instanz wird. Die ursprüngliche self-Instanz wurde zur other-Instanz. Um z.B. alle Bälle auf die Position der Instanz zu setzen, nutze

      GML-Quellcode

      1. with (ball)
      2. {
      3. x = other.x;
      4. y = other.y;
      5. }


      Das ermöglicht uns, die Variable bum wegzukürzen.


      Was bleibt, ist also im ersten Beispiel mit der Rakete:

      GML-Quellcode

      1. with ( instance_create(x,y,obj) ) target = other.target;


      Und das zweite läßt sich natürlich ähnlich komprimieren:

      GML-Quellcode

      1. with ( instance_create(x,y,obj) )
      2. {
      3. path = path_copy (other.path);
      4. path_shift (path,other.x,other.y);
      5. path_start (path,1,3,1);
      6. }


      Ich hoffe, das hilft weiter.