flex 對象池

來源:互聯網
上載者:User
package  {import flash.utils.Dictionary;import flash.utils.getDefinitionByName;import flash.utils.getQualifiedClassName;/*** 用於顯示對象的對象池類* @author yanghongbin**/public class DisplayObjectPool {private static var instance:DisplayObjectPool;/***  作為對象池的詞典dict*/private var objPoolDict:Dictionary = new Dictionary();public function DisplayObjectPool() {}public static function getInstance():DisplayObjectPool {if (instance == null) {instance = new DisplayObjectPool();}return instance;}/*** 向對象池中放入對象,以便重複利用* @param disObj 要的放入對象**/public function push(oldObj:Object):void {var objName:String = getQualifiedClassName(oldObj);if (oldObj == null) {return ;}if (this.objPoolDict[objName] == null) {this.objPoolDict[objName] = [];}this.objPoolDict[objName].push(oldObj);}/*** 從對象池中取出需要的對象* @param targetObj 需要的對象類類名,沒必要必須是類執行個體名 類名就可以* @return 取出的相應對象**/public function pop(targetObj:Object):Object {var objName:String = getQualifiedClassName(targetObj);trace(objName);if (this.objPoolDict[objName] != null && this.objPoolDict[objName].length > 0) {return this.objPoolDict[objName].pop()as Object;}var objClass:Class = getDefinitionByName(objName)as Class;var obj:Object = new objClass as Object;return obj;}}}
來自:★大笨熊之家★

在as3遊戲開發中,記憶體問題基本是開發人員最為頭疼的了,官方也沒具體的記憶體最佳化指導,開發人員只能自己摸索著。顯示列表的層級removechild、事件監聽的及時移除或者弱引用。這些都是對於記憶體問題要注意的,因為AS3的記憶體回收機制並不是那麼‘勤勞’的,記憶體回收只會在特定的時刻,或者是記憶體達到一定的瓶頸時才會進行。所以開發人員要特別注意開發細節上的處理來節省記憶體。對象池是一個很好的方法。

比如在製作子彈射擊的時候,子彈每次都被new出來。這樣肯定很消耗記憶體。如果子彈new出來後螢幕上不需要這顆子彈了。可以將其放入對象池中。再次new的時候可以重複利用。

我寫了一個對象池的類。這個類是單例的。用的是dictionary集合來進行的儲存物件。KEY就是對象的包名+類名,所對應的是一個array數組。裡面存放著可重複利用的對象

用 一個push方法來放入對象

用一個 pop方法來取出需要的對象。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.