2010-11-15 48 views

回答

1

不,這是不可能的構造函數中知道里面的代碼塊東西,節省你可以從堆棧跟蹤瞭解(雖然這不是可用的,除了在Flash中的調試器版本)。即使您擁有包含類的全局訪問點,它仍然不允許訪問。

想象一個像方法調用一樣的構造函數。在一行AS中,它將在之前被稱爲。例如:var a:Foo = new Foo()Foo創建(構造函數完成),然後a填充任何剛發生的事情。那之後,除非它被告知它a仍然不可知的(因爲封裝的)情況下的(這是一個DisplayObject即使如此 - 試試這個(var mc:MovieClip = new MovieClip(); trace(mc.root) //this will be null


我保持這個原因。

您可以始終從flash.utils包中獲取getQualifiedClassName的類的名稱。只有在構建好DisplayObject之後,才能獲得DisplayObject,但是您可以模擬這(我相信)覆蓋function set name(value:String):void。如果這不起作用,然後嘗試在Event.ADDED和/或01之後找到它。

1

實例名稱不是很重要。您最好將實例的引用存儲在數組中。

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); 
} 

順便說一句:代替實例名稱,可以爲你的類添加一個自動索引。

package 
{ 
    public class SizeClass 
    { 
    private static var global_index:int = 0; 
    public const INDEX:int = global_index ++; 
    } 
} 

,你可以像這樣訪問:

var big:SizeClass = new SizeClass(); 
trace(big.INDEX) // 0 

var small:SizeClass = new SizeClass(); 
trace(small.INDEX)// 1 

來源:http://blog.stroep.nl/2010/08/auto-increment-as3-class/

+0

我正在寫一類爲我自己的圖書館,並引用實例名稱將是一個巨大的方便,甚至雖然我知道這可能不是最好的設計。 – TheDarkIn1978 2010-11-15 15:45:54

相關問題