Appeler des fonctions dans une fonction - Flash Actionscript 2.0
-
09-06-2019 - |
Question
J'essaie d'appeler une fonction après avoir chargé du XML dans Actionscript, et je me demande simplement comment appeler cette fonction.Exemple:
//Function Declarations
function parentFunction()
{
function callMe()
{
textField.text = "lawl";
}
}
Maintenant, comment appeler la fonction "callMe()" dans une autre partie du code, comme une fonction onRelease ?
on(release)
{
callMe(); //doesn't work
parentFunction().callMe(); //doesn't work
parentFunction.callMe(); //doesn't work
}
ActionScript 2.0 est tellement bancal !Des idées?
La solution
Êtes-vous obligé de déclarer callMe à l’intérieur de parentFunction ?Je suppose que oui parce que sinon tu le ferais simplement
fonction parent () {} fonction callme () {}
Pour être clair, une fonction ne peut pas posséder une autre fonction à moins que vous ne fournissiez une certaine marge pour que cette fonction puisse vivre.
Ainsi, en JavaScript, vous feriez cela en utilisant l'objet prototype pour déclarer la fonction callMe en tant que méthode de l'objet renvoyé par parentFunction.
http://www.howtocreate.co.uk/tutorials/javascript/objects
Pour ActionScript, lisez cet article sur le site Web d'Adobe :http://www.adobe.com/devnet/flex/articles/as_collections_03.html
MODIFIER:Après quelques lectures supplémentaires, il semble que la façon dont vous avez fait les choses, vous déclarez en fait callMe comme un privé fonction.Voir cet article qui devrait faire le tout problème javascript privé/public beaucoup plus compréhensible.
Autres conseils
Je suis un idiot.J'ai oublié le principe "une fonction ne peut pas posséder une autre fonction", alors j'ai trouvé une autre façon de le faire.Merci!
Bien entendu, une fonction peut « posséder » une autre fonction.c'est ECMAScript, rappelez-vous.Déclarez simplement une variable dans votre fonction et attribuez-lui une fonction.Vous pouvez ensuite appeler votre fonction en utilisant la méthode "call".
fonction foo () {trace ("foo");
var bar = function()
{
trace("bar");
};
bar.call();
}
foo();
//v--- on the frame
function callMe(){
textArea.text='lawl';
}
//v---- for button
on(release){
callMe();
}
--- or -----
//CUSTOM!!
//v---- on frame
function callMe(say){
textArea.text=say;
}
//v--- for button
on(release){
callMe('lawl');
}
Désolé pour le mauvais anglais, définissez un gestionnaire de boutons (menu), Whitch est situé dans un MC.
MC "Buttons" sur scène (avec 3 "testbtn" dedans) @ première image :
function SetMethod(Method:Function){
//trace(Method.call());
//or something like:
testbtn1.addEventListener(MouseEvent.CLICK, Method);
testbtn2.addEventListener(MouseEvent.CLICK, Method);
testbtn3.addEventListener(MouseEvent.CLICK, Method);
}
Scène (avec MC "Butttons" dedans) @ première image :
function TheMenuListener(evt:Event):void{
trace(evt.target.name);
}
...
Buttons.SetMethod(this.TheMenuListener);
renvoie le testbtn.name
Modifier:Oh, c'est pour AS3, mais ça aide peut-être !