Actionscript 3 ActionScript-从构造函数中获取实例名称而不传递参数?
是否可以从类中获取类的实例名,而不必手动将实例名作为字符串参数传递给类构造函数Actionscript 3 ActionScript-从构造函数中获取实例名称而不传递参数?,actionscript-3,constructor,instance,Actionscript 3,Constructor,Instance,是否可以从类中获取类的实例名,而不必手动将实例名作为字符串参数传递给类构造函数 //Create New SizeClass var big:SizeClass = new SizeClass(); //------------- package { public class SizeClass { public function SizeClass() { trace( //-- Instance Name "big" --//
//Create New SizeClass
var big:SizeClass = new SizeClass();
//-------------
package
{
public class SizeClass
{
public function SizeClass()
{
trace( //-- Instance Name "big" --// );
}
}
}
不,在构造过程中不可能知道关于包含代码块的任何信息,请保存从堆栈跟踪中学到的信息(尽管除了在Flash的调试器版本中,这是不可用的)。即使您有一个包含类的全局访问点,它仍然不允许该访问 把构造函数想象成方法调用。在AS行中,它将在赋值之前调用。例如:
var a:Foo=new Foo()
创建Foo
(构造函数完成),然后用刚刚发生的事情填充a
。在这一点之后,a
将保持对其上下文的不可知性(因为封装),除非它被告知(这在DisplayObject上甚至是真的——试试这个(var mc:MovieClip=new MovieClip();trace(mc.root)//这将是null
)
我之所以保留这个,是因为它很有用,尽管对你最初的答案没有用处
您总是可以从
flash.utils
包中获取带有getQualifiedClassName
的类的名称。在构建DisplayObject之前,您无法获取它的名称,但您可以通过(我相信)重写函数集名称(值:String)来模拟它:void
。如果不起作用,请尝试在事件之后查找它。添加了
和/或事件。添加了\u到\u SAGE
实例名称不是很重要。最好将实例的引用存储在数组中
var sizes:Array = new Array();
var big:SizeClass = new SizeClass();
sizes.push( big );
当您想要访问它们时,可以在阵列中循环
for (var i:uint = 0; i < list.length; ++i)
{
var size:SizeClass = list[i] as SizeClass;
trace( size );
}
您可以通过以下方式访问:
var big:SizeClass = new SizeClass();
trace(big.INDEX) // 0
var small:SizeClass = new SizeClass();
trace(small.INDEX)// 1
来源:我正在为我自己的库编写一个类,引用实例名称将非常方便,尽管我知道这可能不是最好的设计。
var big:SizeClass = new SizeClass();
trace(big.INDEX) // 0
var small:SizeClass = new SizeClass();
trace(small.INDEX)// 1