如何解决as3-从空变量中找出变量类型
| 当未实例化变量时,是否可以找出变量类型? 我要完成的示例: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
}
解决方法
否,因为在使用\“ new \”关键字创建变量之前,变量是对在vm中未创建的对象的引用。因此,在执行此操作之前,无论您对它们执行什么操作,引用(foo / bar等)都将始终为null。
, 我不知道您想做什么,但您可能会使用
describeType
:
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 \”属性。
它应根据情况返回\“ TextInput \”,\“ Button \”等。
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()
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。