Things I learned today

Zeitgesteuerte Events in actionscript3

Mein Match3 Spiel soll, ähnlich wie Bejeweled Blitz, einen Timer erhalten, der bestimmt, wie lange ein Spieler spielen kann. Auch das ist in as3 zum Glück recht einfach über ein TimerEvent zu lösen. Beim Realisieren des Timers haben mir zwei kleine Tutorials geholfen. Meine Lösung sieht wie folgt aus:

     import flash.utils.Timer;
     import flash.events.TimerEvent;
     import flash.text.TextField;
 
     var time:uint = 60;
     var timeText:TextField=new TextField(); 
 
     addChild(timeText);
     timeText.textColor=0x1111111;
     timeText.x = 600;   //position of time text
 
     var timerObject:Timer = new Timer(1000,60);
     timerObject.addEventListener(TimerEvent.TIMER, reduceTime);
     timerObject.start();
 
     private function reduceTime(eventObject:TimerEvent):void {
          if(time > 0){
              time--;
              timeText.text = "Time: " + time.toString();
          }
          else{
              timeText.text = "GAME OVER";
              //TODO: Trigger Game over
          }
     }

Zuerst definiere ich ein paar Variablen. Die Variable time enthält die noch verbleibende Zeit, das TextField gibt diese aus.

Anschließend wird ein timerObject erzeugt. Der erste Parameter definiert das Zeitintervall in dem das Zeitereignis ausgelöst werden soll. In diesem Fall 1000ms, also jede Sekunde. Der zweite Parameter gibt an, wie oft das Zeitereignis ausgelöst werden soll. Ich habe hier 60 mal gewählt. Bei diesem Code kann man den Parameter aber genauso gut weglassen oder auf 0 setzen. Dann wird das Ereignis unendlich oft ausgelöst.

Die darauf folgende Zeile registriert den EventListener. Wie üblich gibt der zweite Parameter an welche Funktion das Ereignis abarbeiten soll. Anschließend wird der Timer gestartet.

Post a Comment

Your email is kept private. Required fields are marked *