Actionscript 3 as3-从空变量中找出变量类型
当变量未实例化时,是否可以确定变量类型 我正在努力实现的示例:Actionscript 3 as3-从空变量中找出变量类型,actionscript-3,class,dynamic,Actionscript 3,Class,Dynamic,当变量未实例化时,是否可以确定变量类型 我正在努力实现的示例: var foo:ExampleOne; var bar:ExampleTwo; var arr:Array = [foo, bar]; for each(var myVar:Object in arr) { myClass = new getDefinitionByName( getQualifiedClassName( myVar ) ) // doesn't work } 不,因为变量是对vm中未创建的对象的引用,
var foo:ExampleOne;
var bar:ExampleTwo;
var arr:Array = [foo, bar];
for each(var myVar:Object in arr)
{
myClass = new getDefinitionByName( getQualifiedClassName( myVar ) ) // doesn't work
}
不,因为变量是对vm中未创建的对象的引用,除非您使用“new”关键字创建它们。因此,在执行此操作之前,无论您在引用(foo/bar等)上运行什么操作,它们都将始终为空。我不知道您想做什么,但您可以使用
描述类型
:
package
{
import flash.display.Sprite;
import flash.text.TextField;
import flash.utils.ByteArray;
import flash.utils.describeType;
import flash.utils.getDefinitionByName;
public class TestTextfield extends Sprite
{
public var foo:TextField;
public var bar:ByteArray;
public function TestTextfield()
{
var arr:Array = ["foo", "bar"];
for each(var myVar:String in arr)
{
var varClass : String = describeType(this)..variable.(@name == myVar).@type.toString();
var myClass : * = new (getDefinitionByName(varClass) as Class)
}
}
}
}
尝试使用“className”属性
它应该返回“文本输入”、“按钮”等。。。视情况而定
for each (var item:* in myArray)
{
if(item.hasProperty('className'))
{
trace("item ["+i+"] is :" + item['className']);
}
}
也许你想做这样的事
var a:Class = MyClassA; //put a reference to a Class object into 'a' variable
var b:Class = MyClassB;
var classes:Array = [a,b];
for each(var classObj:Class in classes){
var objInstance : * = new classObj()
}
试过了,没用。我投了否决票,因为我没有测试就发布了一个答案。它有效^^',这就是为什么我把所有的文件结构都放在flash Builder上,我刚刚测试过。我很高兴向上投票以取消否决票,尽管我注意到你在引号中加了“foo”和“bar”,这是作弊!;)好吧,这不可能是最初要求的方式。没错,我作弊,但我认为这是最接近的方式。该项为null,因此您无法访问变量内的任何内容。好的。。那么问题是:这是什么类型的?有一个解决方案。。。没有类型。我知道,但变量是声明的,所以我想我可以检索此信息。