2016-10-31 2 views
1

J'ai créé un bouton dans Adobe Animate qui devrait, si vous le pressez être échangé avec un autre bouton d'une couleur différente, après 1 seconde, vous devriez être redirigé vers la scène précédente.Retard actionscript à l'intérieur de la fonction

Mon code:

button_answer_2.addEventListener(MouseEvent.CLICK, fl_ClickToGoToPreviousScene); 
function fl_ClickToGoToPreviousScene(event:MouseEvent):void 
{ 
    button_answer_2.visible = false; 
    button_answer_2_red.visible = true; 


     setTimeout(myDelayedFunction,3000); 
     function myDelayedFunction(){ 
       MovieClip(this.root).prevScene(); 
      } 
} 

malheureusement la méthode myDelayedFunction ne fonctionne pas parce qu'il est dans un autre auj, je ne vois pas analternative chemin. Quelqu'un pourrait-il m'aider? (Je ne suis pas le meilleur programmeur donc rester simple si possible)

Merci pour votre réponse

Répondre

0

Utiliser la fonction en ligne et tester à nouveau, je ne peux pas tester maintenant:

setTimeout(function(){ MovieClip(this.root).prevScene(); }, 3000); 
+1

C'est une expression de fonction, qui fait que 'this' est l'objet global. Cela ne fait pas partie de la hiérarchie de la liste d'affichage et n'a pas de propriété 'root'. – null

1

Alors pourquoi pas simplement déplacer la fonction hors de l'autre. Il n'y avait jamais de raison de les imbriquer pour commencer.

button_answer_2.addEventListener(MouseEvent.CLICK, fl_ClickToGoToPreviousScene); 
function fl_ClickToGoToPreviousScene(event:MouseEvent):void 
{ 
    button_answer_2.visible = false; 
    button_answer_2_red.visible = true; 

    setTimeout(myDelayedFunction,3000); 
} 

function myDelayedFunction():void 
{ 
    MovieClip(this.root).prevScene(); 
}