【cocos2d-js官方文檔】十二、對象緩衝池

來源:互聯網
上載者:User

標籤:

2014-12-12 21:39 1134人閱讀 評論(0) 收藏 舉報

分類:

cocos2d-js(28)

目錄(?)[-]

  1. ccpool的使用情境
  2. 如何使用ccpool
cc.pool的使用情境
  • 經常建立和銷毀的元素,例如打飛機遊戲裡面的子彈等。
  • 不適用的情境:不是很經常建立的物體,比如背景,建築等。
如何使用cc.pool
  1. 讓你的類支援cc.pool

    首先,你需在需要使用cc.pool來管理的類中實現reuseunuse方法,cc.pool在執行putInPool時將調用該對象的unuse方法,可以在unuse中完成進入回收池前的操作,reuse是當你要從回收池中取出對象時的重新初始化操作,你可以將這個對象初始化為重新可用的狀態。

    var MySprite = cc.Sprite.extend({    _hp: 0,    _sp: 0,    _mp: 0,    ctor: function (f1, f2, f3) {        this._super(f1, f2, f3);        this.initData(f1, f2, f3);    },    initData: function (f1, f2, f3) {        this._hp = f1;        this._mp = f2;        this._sp = f3;    },    unuse: function () {        this._hp = 0;        this._mp = 0;        this._sp = 0;        this.retain();//if in jsb        this.setVisible(false);        this.removeFromParent(true);    },    reuse: function (f1, f2, f3) {        this.initData(f1, f2, f3);        this.setVisible(true);    }}); MySprite.create = function (f1, f2, f3) {    return new MySprite(f1, f2, f3)}MySprite.reCreate = function (f1, f2, f3) {    var pool = cc.pool;    if (pool.hasObject(MySprite)) return pool.getFromPool(MySprite, f1, f2, f3);    return  MySprite.create(f1, f2, f3);}
  2. 放入回收池

    cc.pool.putInPool(object);

    調用此方法將調用對象的unuse的方法,並將對象放入回收池。

  3. 從回收池回收對象

    var object = cc.pool.getFromPool("MySprite", args);

    當你需要從回收池中取出一個對象,你可以調用getFromPool傳入對象的class,以及傳入需要傳入的初始化參數,這些參數將被傳入reuse方法中,cc.pool將自動調用reuse方法。

  4. 判斷回收池中是否有可用對象

    var exist = cc.pool.hasObject("MySprite");

    該方法用於尋找回收池中是否存在MySprite類的可回收對象。

  5. 刪除回收池中的某個對象

    cc.pool.removeObject(object);

    將你要刪除的對象傳入,該對象將會從回收池刪除。

  6. 清空回收池

    cc.pool.drainAllPools();

    當你需要清除所有回收池中的對象,例如完成遊戲要進入其他頁面,舊頁面中的可回收對象不再有用了,為避免不必要的記憶體佔用,你可以使用drainAllPools刪除所有的可回收對象。

【cocos2d-js官方文檔】十二、對象緩衝池

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.