• 对象池技术


    在arpg页游场景里面,经常被杀的怪物对象需要反复生成、销毁。频繁的触发垃圾回收会降低游戏运行效率,对象池技术就是为了解决这种问题

    对象池特点:

    1、聚合有一个容器,该容器装有已生成的对象;

    2、封装对象的生成操作;

    3、封装对象的销毁操作;

    ============================================================

    ==============简单的示例,可以自动扩容的对象池===========================

    public class ObjectPool
    {
    protected var pool:Array = [];

    protected var cl:Class;

    private var property:Object;

    private var count:int = 0;

    public function ObjectPool(c:Class,property:Object = null)
    {
    this.cl = c;

    this.property = property;
    }

    /**获取实例*/
    public function getObject():*{
    if (pool.length > 0){
    return pool.pop();
    }else{
    trace("当前对象数目" + (++count));
    return new cl;
    }
    }

    /**回收实例,这里并没有对obj的属性进行处理,建议在回收前自行处理*/
    public function recycle(obj:*):void{

    pool.push(obj);
    }

    protected function initialize(ins:cl):void{

     if (property){

        for (var key:String in property){

          if(ins.hasOwnProperty(key)){

               ins[key] = property[key];

            }

        }

    }

    }


    /**清空*/
    public function release():void{
    pool = [];
    }
    }

  • 相关阅读:
    矩阵按键转化为普通单个按键
    表达式位长 对结果的影响
    LuoguP3674 小清新人渣的本愿 && BZOJ4810: [Ynoi2017]由乃的玉米田
    BZOJ2956: 模积和
    NOIP2016 天天爱跑步
    LuoguP3948 数据结构
    AT2442 フェーン現象 (Foehn Phenomena)
    博客园美化笔记
    BZOJ2242: [SDOI2011]计算器
    分块入门与分块的经典应用
  • 原文地址:https://www.cnblogs.com/maomaolw3/p/4920746.html
Copyright © 2020-2023  润新知