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