2010-12-13 4 views
0

Je les fonctions suivantes:le passage de paramètres avec EventListener

private function createContent(slideData:Object):void 
    { 
    transitions = new Transitions(); 
    if (slide){ 
    transitions.applyTransition(slide); 
    transitions.addEventListener(Transitions.TRANSITION_COMPLETE, completeHandler); 

    } 
    slide = new Slide(slideData); 
    addChild(slide); 
    transitions.applyTransition(slide); 
    } 
    private function completeHandler(e:Event):void{ 
    removeChild(slide); 
    } 

Je Transmet un événement dans la première fonction et en ce qui concerne la completeHandler je voudrais supprimer la diapositive de la première fonction mais il isnt reconnu . Comment puis-je passer la diapositive avec l'eventlistener afin que je puisse l'enlever dans le fullHandler? (J'ai plusieurs instances de la diapositive, donc je dois passer à travers pour avoir la bonne instance). Toute personne qui peut m'aider?

+5

http://stackoverflow.com/a/13488640 –

Répondre

0

Vous pouvez utiliser la propriété name de la diapositive si vous le souhaitez.

(Bien que vous ne l'avez pas décrit comment & où diapositive est effectivement déclarée - sprite, mc, etc)

En utilisant la propriété de nom:

Set diapositive comme slide.name = "instanceName" (Dans votre première fonction)

Get diapositive comme getChildByName("instanceName") (Dans votre deuxième fonction)


Sinon, vous pouvez aussi:

  • Définir la diapositive en tant que membre de la classe, accessible par toutes les fonctions de la classe.
  • Ajouter une référence de chaque diapositive à un tableau disponible en tant que classe membre à toutes ses fonctions.
4

Voici quelques façons de transmettre la diapositive à l'écouteur d'événement.

  • 1/En tant que propriété de l'événement

    //Assuming that: 
    // 1/ you create a custom Event class that takes two parameters 
    // type: String 
    // slide:Slide 
    // 2/ that you have assigned the slide object to a variable in the 
    // applyTransition method , which you can then assign to the event 
    transitions.dispatchEvent(new TransitionEvent( 
              Transitions.TRANSITION_COMPLETE , slide)); 
    
  • 2/En tant que propriété du répartiteur

    //Assuming that: 
    // you assign the slide object to a variable in the 
    // applyTransition method 
    private function completeHandler(e:Event):void{ 
        var target:Transitions = event.currentTarget as Transitions; 
        removeChild(target.slide); 
    } 
    
0

Si la variable est pas dynamique, vous pourriez probablement utiliser une fonction anonyme pour passer la variable.

transitions.addEventListener(Transitions.TRANSITION_COMPLETE, function (evt:Event) { 
    completeHandler(evt, variable1, variable2); 
}); 

function completeHandler(evt, catch1, catch2) { 
    //do stuff 
} 
Questions connexes