1.简单的叙述说明池

例如,我们知道,游戏的游戏类型跑酷,游戏元素都在不断重复。游戏的内容将继续从屏幕右侧的创建,当元件在屏幕的左侧的,将消失。假设不变new 对象。release 对象 性能影响。怎样优化呢?就涉及到缓存池的概念。

再举一个样例:一个主角在一个竞技场中不断杀怪。每次有5个怪出现,杀死一个又会出来一个。

每次出怪就new 怪,死亡怪就release怪。会非常浪费的。

已经死亡的怪,我们简单地给他补满血不就能够反复使用了嘛!像拍电影,一个人不是真正死亡,仅仅是看起来死了。还是能够反复使用的嘛!

2.缓存池简单实现

我们能够事先new10个怪放入到一个数组中。简单把这个数组称作缓存池,事实上就是一个数组。

再搞个int的变量表示取数组中第几个怪,初始化为0,表示取第一个怪。

1.当我们想要从屏幕中创建一个新怪时,不去new,而是用那个int变量从数组中取一个怪拿来用。当然拿来用之后,还要简单的初始化下,给他补满血啊。穿上完整衣服等等。再把int变量加1,假设int变量等于数组的长度时。把它归0。

2.当一个怪被主角杀死时,让这怪播完死亡动画后,就remove掉,但不把他全然release掉。

差点儿相同实现就是这样,简单吧!

仅仅是注意初始缓存池。new对象的数量。一般要大于你实际使用的数量。

3.简单代码

//创建缓存池
Vector bonePools;
void createBonePools(){ if(bonePools.empty()){
for(int i = 0; i < 30; ++i){
auto oneBone = Bone::create();
bonePools.pushBack(oneBone);
}
}
}

//从缓存池中取一个对象
int _boneIndex;
Bone* getOneBone(){
if(_boneIndex == bonePools.size()){
_boneIndex = 0;
}
Bone* result = bonePools.at(_boneIndex);
result->reuseInit();//这个比較重要,反复使用一个元素也要简单初始化一些东西的。之前死亡的人物记得给他补满血
 ++_boneIndex;
return result;
}

cocos2d 缓存池 对象的再利用

版权声明:本文博客原创文章,博客,未经同意,不得转载。

cocos2d 缓存池 对象的再利用的更多相关文章

  1. UITableView系列(1)---Apple缓存池机制

    一.概述 关于UITableView的基本使用, 其实十分简单.但是做App最重要的之一就是细致,技术方面要做到细致, 必须深入了解底层, 才能做出优化让程序跑得更快.那么这一系列文章从我实际项目中获 ...

  2. IOS tableView的性能优化(缓存池)

    使用缓存池(标识类型) 1.通过 一个 标识 去 缓存池 中寻找可循环得用的cell 2.如果缓存池找不到可循环得用的cell:创建一个新的cell(给cell贴个标识) 3.给cell设置新的数据 ...

  3. iOS开发:一个瀑布流的设计与实现(已实现缓存池功能,该功能使得瀑布流cell可以循环利用)

    一个瀑布流的实现有三种方式: 继承自UIScrollView,仿写UITableView的dataSource和delegate,创造一个缓存池用来实现循环利用cell 写多个UITableview( ...

  4. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  5. Unity日记—对象缓存池

    最近都在忙别的事了,今天忙里偷闲了解了一下对象池是啥玩意,简单记录一下. 还是个正在学习的萌新,如果写的不好请见谅. 1.对象池是啥 在了解对象池之后,我才意识到以前写的代码有多么蠢,当场景中有一些重 ...

  6. javascript设计模式学习之四——单例模式,缓存与对象池

    单例模式的定义:确保一个实例,并提供全局访问. 惰性单例的定义:只在需要的时候才创建对象. 在开发中,有些对象往往只需要一个,比如线程池.全局缓存.浏览器中的window对象等. java中的单例 关 ...

  7. 【iOS开发-68】APP下载案例:利用tableView自带的cell布局+缓存池cell复用时注意button状态的检查

    (1)效果 (2)源码与资源下载 http://pan.baidu.com/s/1pJLo2PP (3)总结 --核心是利用UITableView里面自带的cell来制作样式同样的cell. 与之对应 ...

  8. Unity3d 动态加载场景物件与缓存池的使用

    聊聊Unity3d动态加载场景物件那些事儿. 众所周知,在策划或美术设计完游戏场景地图后,一个场景中可能会存在成千上万个小的物件,比如石头,木箱子,油桶,栅栏等等等等,这些物件并不是游戏中的道具,仅仅 ...

  9. 深入剖析Java中的装箱和拆箱(缓存池技术)

    以下是本文的目录大纲: 一.什么是装箱?什么是拆箱? 简单一点说,装箱就是  自动将基本数据类型转换为包装器类型:拆箱就是  自动将包装器类型转换为基本数据类型. 二.装箱和拆箱是如何实现的 1:反编 ...

随机推荐

  1. MongoDB学习笔记-认识MongoDB

    学习参考地址 http://www.runoob.com/mongodb NoSql 流行的数据库Oracle,SqlServer,MySql为关系性数据库,相对的,也有非关系性数据库,统称为NoSq ...

  2. LeetCode Solutions : Swap Nodes in Pairs

    Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2-& ...

  3. VS2010中配置C#Project不生成.vhost.exe和.pdb文件的方法

    在VS2010中编译C#工程时,在C#的Project的属性界面的Build选项卡中当Configuration : Relese 时,依然会生成扩展名为.vhost.exe和.pdb文件. 其中.p ...

  4. ASP.NET vNext or .NET vNext?

    ASP.NET vNext or .NET vNext? 从概念和基础开始 vNext在曝光以来绝大多数以ASP.NET vNext这样的的字眼出现,为什么这边会提及.NET vNext?原因是我认为 ...

  5. Java并发编程之ConcurrentHashMap(转)

    ConcurrentHashMap ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法.Concurrent ...

  6. 2014辽宁ACM省赛 Prime Factors

    问题 L: Prime Factors 时间限制: 1 Sec  内存限制: 128 MB [提交][状态][论坛] 题目描写叙述 I'll give you a number , please te ...

  7. 采用 matlab 阅读SAR 元数据

    这方面能够參考书籍:"Digital processing of synthetic aperture radar data", by Ian Cumming and Frank ...

  8. Team Foundation Server 2015使用教程--团队项目删除

  9. QR代码简单

    QR代码(Quick Response Code, 高速响应码)属于二维矩阵码在一个.由DENSO(日本电装)公司开发,由JIS和ISO将其标准化. QR码分为两种模式:模式1.模式2.当中.模式1相 ...

  10. Appium - iOS Mac环境结构

    Appium - iOS Mac环境结构 笔者: Max.Bai 时间: 2014/10 1. iOS开发环境的搭建 1.1系统要求 MacOS X 10.7 or higher, 10.9.2 re ...