Archief - problemen met custom events

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Bamboebahr

Legacy Member
Hallo

ik ben bezig met een simpel reactiespelletje te maken als opdracht voor school (DeVine student). Nu heb ik een probleem met custom events en krijg ik de data niet heen en weer tussen klassen zoals het hoort :p

Ik heb dus verschillende klassen:
-een "PayLoadEvent" klasse die overerft van Event
- Een klasse "Scoreteller" die een time "scoreteller" bevat en een variabele "tempScore" van het type uint.
- Een klasse "Game" die een instantie bevat van een movieclip "basisScoreTeller" met een tekstvak "scoreText"

Nu is de bedoeling dat ik vanuit de klasse Scoreteller de waarde van tempScore kan sturen naar de klasse "Game" die dan de score moet updaten per tick (van 1 seconde).

Dit heb ik tot nu toe:

code van PayloadEvent
Code:
import flash.events.Event;
	
	public class PayloadEvent extends Event
	{
		
		//properties
		public var data:Object;
		
		//constructor
		public function PayloadEvent(type:String, doorTeZendenData:Object, bubbles:Boolean=true, cancelable:Boolean=false)
		{
			super(type, bubbles, cancelable);
			this.data = doorTeZendenData;
		}
		
		
		//methods
		
	}

code van Scoreteller
Code:
public class Scoreteller extends EventDispatcher
	{
		
		//properties
		public var scoreteller:Timer 
                private var tempScore:uint = 0;

                //constructor
		public function Scoreteller()
		{
			scoreteller = new Timer(1000,0);
  		   scoreteller.addEventListener(TimerEvent.TIMER,scoreHandler);
                }

                public function start():void{
		scoreteller.start();
		}

                public function scoreHandler(e:TimerEvent):void{
			tempScore += 10;
			dispatchEvent( new PayloadEvent("SCORETELLER_CHANGED", tempScore, true));
		}
}

Code van "Game":
Code:
			this.addEventListener("SCORETELLER_CHANGED",scoreChangedHandler);

private function scoreChangedHandler( e:PayloadEvent):void{
			scoreT.scoreText.text = String(e.data);
			trace ("score is "+e.data);
		}

Bij de trace geeft hij echter niets terug,en ook het tekstveld wordt niet geupdatet, dus gok ik dat hij die uint niet terugkrijgt. Kan iemand me hiermee helpen?

Alvast bedankt

Zero Grav

Legacy Member
Ge doet alleszins al "this.addEventListener", terwijl ge die eventlistener moet hangen aan hetgeen dat het dispatcht, de instantie van uw ScoreTeller dus.

Bij Custom events maakt ge trouwens best een "public static const" van uw custom events, zo krijgt ge nog code hinting en is het bij wijzigingen minder foutgevoelig. Die constante maak ik zelf altijd aan in mijn PayloadEvent.

Code:
dispatchEvent( new PayloadEvent(PayloadEvent.SCORETELLER_CHANGED, tempScore));
instantieScoreTeller.addEventListener(PayloadEvent.SCORETELLER_CHANGED, scoreChangedHandler);

Het is ook altijd wel handig om uw PayloadEvent klasse een nuttigere naam te geven zoals ScoreEvent ofzo.

Bamboebahr

Legacy Member
Dat was het inderdaad,bedankt :)
Dat van die static variabelen wist ik al, heb ze gewoon nog niet gebruikt omdat dit een test was, toch bedankt ^^
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan