《Cocos2D-x权威指南》——3.7 容器类

3.7 容器类

之前已经说过了,为了方便从Cocos2D-iPhone移植到Cocos2D-x,Cocos2D-x引擎底层实现了一些Objective-C语言框架中的容器类,包括CCMutableArray、CCArray、CCMutableDictionary和CCDictionary。在Cocos2D-x 2.0版本以后,CCMutableArray和CCMutableDictionary继承STL(Standard Template Library,标准模板库)。相比之下,继承UTHash(哈希表的宏实现)的CCArray和CCDictionary效率更高,并且功能也有所增加,更方便绑定JavaScript脚本。
3.7.1 CCMutableArray和CCArray
之前已经说过了,Cocos2D-x 2.0以后的版本已经不支持CCMutableArray了,本书讨论CCMutableArray只是为了使读者看到之前的游戏代码时不会疑惑。
可以把CCMutableArray理解成是一个数组的容器,装载的对象只要是CCObject的子类就可以。CCMutableArray的常用函数如表3-18所示。

CCMutable Array定义函数的使用如代码清单3-39所示。
代码清单3-39 CCMutableArray定义函数

CCMutableArray<AstarItem*> open = new CCMutableArray<AstarItem*>();

其中AstarItem为自己定义的类,继承自CCObject,使用时调用相应函数就可以了。
Cocos2D-x 2.0以后的版本,CCArray取代了CCMutableArray。CCArray的常用函数如表3-19所示。

CCArray定义函数的使用如代码清单3-40所示。
代码清单3-40 CCArray定义函数

CCArray *newArray = new CCArray(m_pControlPoints->count());

可以发现,它不用确定存储对象的类型,因此每个对象的类型可以不相同,这也是CCArray的一个特点。
3.7.2 CCMutableDictionary和CCDictionary
CCMutableDictionary和CCDictionary类似于哈希表的键值对应的容器,同样,在Cocos2D-x 2.0之前的版本有CCMutableDictionary,2.0以后的版本使用CCDictionary。CCMutableDictionary的常用函数如表3-20所示。

CCMutableDictionary定义函数的使用如代码清单3-41所示。
代码清单3-41 CCMutableDictionary的定义函数

CCMutableDictionary<string,CCString *> *tiledic = map->propertiesForGID(tilegid);

CCDictionary的常用函数如表3-21所示。

CCDictionary定义函数的使用如代码清单3-42所示。
代码清单3-42 CCDictionary的定义函数

CCDictionary* pRet = new CCDictionary();
时间: 2024-08-01 05:10:14

《Cocos2D-x权威指南》——3.7 容器类的相关文章

经典的《JavaScript 权威指南》中的“对象”不经典

javascript|对象 这些天在为Qomo项目写"JavaScript面向对象的支持"这组文章.也一直在期待网上购得的那本<JavaScript 权威指南>(第四版)快快到来. 在前公司,有这本书的第二或第三版,也一直将这本书视为经典.但那时并没有深入的去看它前几章的概念性叙述,而是把它当成一本手册来查.现在却刻意地关注了,因为Qomo的底层是以纯理论的OOP为基础的. 今天这本书终于寄到了,但是一读之下,大失所望.不知道作者对JavaScript语言的理解能力不够,还

Struts2权威指南

Struts2权威指南里介绍,并结合笔者在此之前也用过webwork和struts1,不过还是对webwork更熟一 些,好在struts2比较接近webwork,所以学习成本相对不高,struts2的好处就不说了,说说差异吧. 1.相对struts1而言,没有了formbean,表单代码不需要一定要使用struts提供的html标签,一般的 html表单标签照样可以使用,耦合度学习成本都低了很多.想想struts1,不用它自身提供的html标签, 表单元素就不能注入,除action外,还得另外

Ansible权威指南.

Linux/Unix技术丛书 Ansible权威指南 李松涛 魏 巍 甘 捷 著 图书在版编目(CIP)数据 Ansible权威指南 / 李松涛,魏巍,甘捷著. -北京:机械工业出版社,2016.11 (Linux/Unix技术丛书) ISBN 978-7-111-55329-8 I. A- II. ①李- ②魏- ③甘- III. 程序开发工具-指南 IV. TP311.561-62 中国版本图书馆CIP数据核字(2016)第258615号 Ansible权威指南 出版发行:机械工业出版社(北

vfp-哪里有“Visual FoxPro权威指南写作原稿及光盘”

问题描述 哪里有"Visual FoxPro权威指南写作原稿及光盘" "Visual FoxPro权威指南写作原稿及光盘",此书哪里还能买到. 解决方案 搜索第一条就是: http://blog.csdn.net/zhanghongju/article/details/38748457 解决方案二: http://blog.csdn.net/zhanghongju/article/details/41020107

《Netty 权威指南》—— 4种IO的对比

声明:本文是<Netty 权威指南>的样章,感谢博文视点授权并发编程网站发布样章,禁止以任何形式转载此文. 2.5.1.概念澄清 为了防止由于对一些技术概念和术语的理解或者叫法不一致引起歧义,本小节特意对本书中的专业术语或者技术用语做下声明,如果它们与其它的一些技术书籍术语不一致,请以本小节的解释为准. 2.5.1.1. 异步非阻塞IO 很多人喜欢将JDK1.4提供的NIO框架称为异步非阻塞IO,但是,如果严格按照Unix网络编程模型和JDK的实现进行区分,实际上它只能被称为非阻塞IO,不能叫

详解JavaScript权威指南之对象_javascript技巧

JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删. JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等. JavaScript对象除了可以保持自有的属性外,还可以从一个称为原型的对象继承属性.对象的方法通常是继承的属性.这种"原型式集成"是JavaScript的的核心特征. 1.创建对象 第一种:对象直接量表示法创建对象. 这是最简单的对象创建方式,对象直接量由若干key:value键值对属性组成,属性之间用逗号分隔,整个对象用花

《Windows 8 权威指南》——1.5 版本对比

1.5 版本对比 Windows 8 权威指南 当今电脑操作系统有许多的分支,总而言之分为三部分.其一是微软代表的Windows系统家族:其二是UNIX以及其分支Linux:其三就是苹果的Mac Os.本章我们主要对比一下Windows的几个版本之间的差别以及与Linux版本中最具代表性的Ubuntu的差别. 1.5.1 Ubuntu 12.04与Windows 8的对比 Ubuntu是目前最流行的Linux操作系统之一,最新的版本更新到了12.04.本节我们从以下几个方面来对比一下Window

《逆向工程权威指南》目录—导读

版权 逆向工程权威指南 • 著 [乌克兰] Dennis Yurichev 译 Archer 安天安全研究与应急处理中心 责任编辑 陈冀康 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 315@ptpress.com.cn 网址 http://www.ptpress.com.cn • 读者服务热线:(010)81055410 反盗版热线:(010)81055315 版权声明 逆向工程权威指南 Simplified Chinese translation c

《ELK Stack权威指南 》第2章 插件配置

本节书摘来自华章出版社<ELK Stack权威指南 >一书中的第1章,第2节,作者饶琛琳,更多章节内容可以访问"华章计算机"公众号查看. 插 件 配 置 插件是Logstash最大的特色.各种不同的插件源源不断地被创造出来,发布到社区中供大家使用.本章会按照插件的类别,对一般场景下的一些常用插件做详细的配置和用例介绍.本章介绍的插件包括:1)输入插件.基于shipper端场景,主要介绍STDIN.TCP.File等插件.2)编解码插件.编解码通常是会被遗忘的环节,但是运用好

《Netty 权威指南》—— NIO创建的TimeClient源码分析

声明:本文是<Netty 权威指南>的样章,感谢博文视点授权并发编程网站发布样章,禁止以任何形式转载此文. 我们首先还是看下如何对TimeClient进行改造: public class TimeClient { /** * @param args */ public static void main(String[] args) { int port = 8080; if (args != null && args.length > 0) { try { port =