Il me manque clairement quelque chose ici.AS3 Dynamic Class Noms des méthodes dynamiques
J'ai besoin de remplir des méthodes de classe dynamique AS3 à partir d'un tableau (voir l'exemple stupide ci-dessous). Mais quand j'appelle ces méthodes, toutes semblent être la même méthode. Dans l'exemple ci-dessous, toutes les méthodes sont foobar1
.
Si je crée des méthodes à la main, sans boucle, tout va bien.
Des indices?
package foo
{
public class Bar
{
public function testDynamicClassSanity():void
{
var foo:Foo = new Foo();
var methods:Object = { foobar1: 101, foobar2: 201, foobar3: 301 };
for (var key:String in methods)
{
var val:Number = methods[key];
foo[key] = function():Number
{
return val;
};
}
// Next trace prints
// 101 = 101 201 = 101 301 = 101
trace(
101, "=", foo.foobar1(),
201, "=", foo.foobar2(),
301, "=", foo.foobar3()
);
}
}
}
internal dynamic class Foo
{
};
Oui, vous avez raison (presque, c'est 101). J'ai mis à jour la question. Comment travailler autour de ça alors? –
Ah, je supposais que la boucle for itérerait sur les propriétés de l'objet dans l'ordre où elles ont été définies, c'était bien sûr stupide de supposer :-) Cochez cette autre question http://stackoverflow.com/questions/422784/ how-to-fix-closure-problem-in-actionscript-3-as3 pour un conseil. –