我總是試圖擴展Sprite類,所以我的對象可以成爲顯示列表的一部分(也有EventDispatcher函數),即使它沒有任何顯示。但是,將包含要顯示的內容。這很方便,因爲包含對象的對象只需要引用它們的容器來顯示列表訪問權限。爲了方便擴展Sprite類?
有沒有人遇到過這種誘惑?
這似乎是常見的,但也似乎不合適。
是否有不必要的內存開銷來不必要地擴展Sprite類?
我總是試圖擴展Sprite類,所以我的對象可以成爲顯示列表的一部分(也有EventDispatcher函數),即使它沒有任何顯示。但是,將包含要顯示的內容。這很方便,因爲包含對象的對象只需要引用它們的容器來顯示列表訪問權限。爲了方便擴展Sprite類?
有沒有人遇到過這種誘惑?
這似乎是常見的,但也似乎不合適。
是否有不必要的內存開銷來不必要地擴展Sprite類?
爲什麼你想要東西成爲顯示列表的一部分?你說:但是,它會包含要顯示的東西。
如果你的意思是你想編寫可顯示的對象,例如做這樣的事情:
var container:Sprite = new Sprite();
var image:Sprite = new some_lib_image();
var image2:Sprite = new some_other_lib_image();
container.addChild(image);
container.addChild(image2);
stage.addChild(container);
然後就是完全可以接受的。如果你想創建一個名爲ImageContainer的類來管理圖像的添加和刪除,並使用它來代替Sprite--那也是完全可以接受的。我不會把它稱爲誘惑,但我不會這樣做,除非你在上面的代碼中增加了一些有價值的東西。
是否有不必要的擴展Sprite類的重大內存開銷?
並不特別。你的類的大小通常是接近sizeof(Sprite)+ sizeof(instanceVariables [])的地方,其中instanceVariables []是你在類中聲明的新變量。我不會爲此擔心。構成比繼承更昂貴;這是不必要地使用太多的容器。在一般情況下,我從不擔心它,但如果我要在粒子系統中創建5000個粒子,我會嘗試儘可能簡化每個粒子。