ActionScript3.0: måder at tilføje parametre til eventListeners

30. maj 2008

i ActionScript3.0 vil man før eller senere støde ind i problemer med at man ikke kan sende parametre direkte med sin eventListener.

her er beskrivelsen af en eventListener, direkte fra hjælp-funktionen i Flash:
function eventResponse(eventObject:EventType):void
{
    // Actions performed in response to the event go here.
}

eventSource.addEventListener(EventType.EVENT_NAME, eventResponse);


man lader sin eventSource (f. eks. en knap) vente på EventType (f. eks. et klik) og eventResponse (f. eks. en funktion, der gør knappen blå istedet for gul)


her er et eksempel bygget over ovenstående:
eksempel hvor man med fordel ville kunne sende parametre med sin eventListener

ved at klikke på en af de små bokse til venstre, tager den store boks samme farve.
smart nok.

men måden det fungerer på er lidt bøvlet, her er koden:

//imports
import caurina.transitions.Tweener;

blueBox.addEventListener(MouseEvent.CLICK, changeColor);
redBox.addEventListener(MouseEvent.CLICK, changeColor);
yellowBox.addEventListener(MouseEvent.CLICK, changeColor);

function changeColor( e:Event ):void{
    switch( e.target.name ){
        case "blueBox":
            trace( "blueBox" );
            Tweener.addTween(this.bigBox, {_color:0x0000FF, time:1, transition:"linear"});
        break;
        case "redBox":
            Tweener.addTween(this.bigBox, {_color:0xFF0000, time:1, transition:"linear"});
        break;
        case "yellowBox":
            Tweener.addTween(this.bigBox, {_color:0xFFFF00, time:1, transition:"linear"});
        break;
    }
}

her bliver man nød til at bruge en switch for at bestemme, hvilken af de små bokse, der er klikket på, og derefter tilegne den store boks den samme farve som den boks, der er klikket på..

men nu har jeg endeligt opdaget et alternativ til dette.
her er den nye kode:

//imports
import caurina.transitions.Tweener;

blueBox.addEventListener(MouseEvent.CLICK, changeColor);
redBox.addEventListener(MouseEvent.CLICK, changeColor);
yellowBox.addEventListener(MouseEvent.CLICK, changeColor);
blueBox._color=  0x0000FF;
redBox._color=0xFF0000;
yellowBox._color=0xFFFF00;

function changeColor( e:Event ):void {
    Tweener.addTween(this.bigBox, {_color:e.target._color, time:1, transition:"linear"});
}

her tildeler man hver boks et farve-parameter på denne måde blueBox._color =  0x0000FF; ...og dette kan så tilgåes senere i funktionen vha. e.target._color


det virker og gør ens arbejde en del nemmere :O)

Vær den første til at give point

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , , ,

Powered by BlogEngine.NET 1.3.1.0
Theme by Mads Kristensen (Modifed by Co3)


Om mig

Felix Sanchez Felix Sanchez
Flashin’ about

Send mig en mail Send mail

Kategorier

None

Seneste kommentarer