utilizan tipos texto que herramienta filtros estático efectos efecto dinamico cuadros cs6 flex actionscript-3

tipos - Flex/Actionscript: acceso dinámico var estático



texto estático flash (2)

Digamos que tengo una clase Foo:

public class Foo { public static var bar:String = "test"; }

¿Cómo puedo hacer referencia a la barra en tiempo de ejecución usando la cadena "Foo" o / y la instancia de Foo y la cadena "barra"?

Es decir

var x:Object = new Foo(); ... x["bar"]

... no funciona, el modo de depuración en IntelliJ me dio muchas esperanzas, ya que la barra aparece como una propiedad.

Actualizar:

Tenga en cuenta que en el "punto de acción" no sé nada sobre foo en tiempo de compilación. Necesito resolver Foo.bar a través de las cadenas "Foo" y "bar".

Dicho de otra manera, como flex no tiene eval ¿cómo puedo lograr lo mismo que eval ("Foo.bar")?


"bar" es una variable estática, por lo que debe acceder a ella a través de la clase en lugar de una instancia de la clase.

trace(Foo.bar); // "test"

Si al acceder dinámicamente a la variable, quiere decir acceder a ella con un nombre de cadena, entonces también quiere hacer eso a través de la clase.

trace(Foo["bar"]); // "test"


Es una variable estática, por lo que no podrá acceder a ella utilizando una instancia de foo; se accede de forma estática, utilizando la notación ClassName.variableName, así:

trace (Foo.bar);

// cede: "prueba"

Además, debido a que declaras públicas tanto Foo como la barra, deberías poder acceder a Foo.bar de esa manera desde cualquier lugar de tu aplicación.

Actualización : Ah, veo lo que estás preguntando. Puede usar flash.utils.Summary.getDefinitionByName ():

// Either this way trace(getDefinitionByName("Foo").bar); // Or this trace(getDefinitionByName("Foo")["bar"]);

... esto último gracias a la respuesta de Jeremy, que era nueva para mí. :)