2016-09-22 1 views
0

Je viens de démarrer un projet, et je me demande si vous pouvez appeler une fonction (dans un écouteur d'événement) à travers une chaîne.N'importe quelle façon d'appeler une fonction comme une chaîne?

import flash.utils.Timer; 
import flash.events.Event; 
import flash.events.TimerEvent; 

var threesec:Timer=new Timer(3000, 1); 
var whaton:String="tsecc" 
threesec.start(); 
threesec.addEventListener(TimerEvent.TIMER_COMPLETE, whaton); 
function tsecc(tsecc:TimerEvent):void{ 
    trace("Hello") 
    threesec.reset(); 
    threesec.start(); 
} 

Cela ne fonctionne pas à cause de cette ligne:

threesec.addEventListener(TimerEvent.TIMER_COMPLETE, whaton); 

et ce code d'erreur:

1067: Implicit coercion of a value of type String to an unrelated type Function. 

Je sais ce que je fais est horriblement mal, mais est-il un bon façon d'appeler une fonction en format de chaîne?

Dois-je ajouter une propriété à la variable, dois-je créer un autre type de variable?

+0

Y a-t-il une manière correcte d'appeler une fonction en format de chaîne? Ou pour appeler une fonction avec une variable –

+0

Je pense que ce que @WillTower demandait n'était pas le problème immédiat que vous avez mais pourquoi vous essayez d'appeler la fonction de cette manière compliquée. Utilisez simplement le vrai nom de la fonction et faites-le avec. Il ne sert à rien de le faire comme vous le souhaitez dans le code que vous avez publié. – null

Répondre

4
threesec.addEventListener(TimerEvent.TIMER_COMPLETE, this[whaton]); 

J'ai utilisé la "syntaxe de parenthèse" pour ce faire. Vous pouvez en apprendre plus à ce sujet en effectuant une recherche sur Internet.

+0

Je savais qu'il y avait quelque chose comme ça, mais je ne savais pas ce que c'était. Je vous remercie! –

+0

De rien. – HITMAN