Cocos2d-x之Array
| 版权声明:本文为博主原创文章,未经博主允许不得转载。
Array是一个列表类容器,是一种线性序列结构;列表容器中的元素是有序的,可以通过下标来访问,就和数组一样。其中Vector也是一种列表容器,但是Array的缺陷是不能自动增长,而Vector却可以。
Array的创建函数:
/** Creates an empty array. Default capacity is 10 创建_Array*/
static __Array* create();
/** Create an array with objects 使用一系列Ref创建_Array*/
static __Array* create(Ref* object, ...) CC_REQUIRES_NULL_TERMINATION;
/** Create an array with one object 使用一个Ref创建_Array*/
static __Array* createWithObject(Ref* object);
/** Create an array with a default capacity创建_Array,并设置容量 */
static __Array* createWithCapacity(ssize_t capacity);
/** Create an array with from an existing array 用一个已经存在的_Array来创建另一个_Array*/
static __Array* createWithArray(__Array* otherArray);
/** @brief Generate a Array pointer by file,param pFileName The file name of *.plist file
return The Array pointer generated from the file从属性列表文件创建_Array*/
static __Array* createWithContentsOfFile(const std::string& pFileName);
/*@brief The same meaning as arrayWithContentsOfFile(), but it doesn't call autorelease, so the
invoker should call release().*/
static __Array* createWithContentsOfFileThreadSafe(const std::string& pFileName);
常用添加元素函数:
向_Array对象中添加元素都必须是Ref和其子类的对象指针类型。
/** Add a certain object 添加一个元素*/
void addObject(Ref* object);
/** Add all elements of an existing array 把一个已经存在的__Array对象中的所有元素添加到当前的__Array中*/
void addObjectsFromArray(__Array* otherArray);
/** Insert a certain object at a certain index在指定的位置插入元素,ssize_t是int类型的别名*/
void insertObject(Ref* object, ssize_t index);
常用移除函数:
/** Remove last object 移除最后一个元素*/
void removeLastObject(bool releaseObj = true);
/** Remove a certain object 移除Array中的某个元素*/
void removeObject(Ref* object, bool releaseObj = true);
/** Remove an element with a certain index 移除一个指定位置的元素*/
void removeObjectAtIndex(ssize_t index, bool releaseObj = true);
/** Remove an objects 移除某个数组_Array对象*/
void removeObjectsInArray(__Array* otherArray);
/** Remove all elements 移除所有的元素*/
void removeAllObjects();
/** Fast way to remove a certain object 快速移除某个元素,把数组的最后一个元素(数值的最后一个远足是NULL)赋值给要删除的元素,但是要注意,这会改变原有与元素的顺序*/
void fastRemoveObject(Ref* object);
/** Fast way to remove an element with a certain index 快速的移除某个指定位置的元素,与fastRemoveObject函数类似*/
void fastRemoveObjectAtIndex(ssize_t index);
替换和交换元素的函数
/** Swap two elements 交换两个元素*/
void exchangeObject(Ref* object1, Ref* object2);
/** Swap two elements with certain indexes 交换两个指定位置的元素*/
void exchangeObjectAtIndex(ssize_t index1, ssize_t index2);
/** Replace object at index with another object. 用一个对象替代指定位置的元素*/
void replaceObjectAtIndex(ssize_t index, Ref* object, bool releaseObject = true);
其他函数:
/** Revers the array 反转Array */
void reverseObjects();
/**判断Array对象是否相等*/
bool isEqualToArray(__Array* otherArray);
/** Returns a random element 随机返回元素*/
Ref* getRandomObject();
/** Returns a Boolean value that indicates whether object is present in array.返回某个元素是否存在Array容器中*/
bool containsObject(Ref* object) const;
/**统计Array的大小*/
ssize_t count();
实例:
.h files #ifndef _ARRAYTEST_SCENE_H_
#define _ARRAYTEST_SCENE_H_
#include "cocos2d.h"
class arrayTest : public cocos2d::Layer
{
private:
public:
static cocos2d::Scene* createScene();
virtual bool init();
void arrTest();
CREATE_FUNC(arrayTest);
};
#endif // _ARRAYTEST_SCENE_H_ .cpp files #include "ArrayTest.h"
USING_NS_CC;
Scene* arrayTest::createScene()
{
// 'scene' is an autorelease object
auto scene = Scene::create();
// 'layer' is an autorelease object
auto layer = arrayTest::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
bool arrayTest::init()
{
if (!Layer::init())
{
return false;
}
arrTest();
return true;
} void arrayTest::arrTest()
{
//1.创建一个Array
Array* arr = Array::create(); //2.添加元素
arr->addObject(String::create("I "));
arr->addObject(String::create("love"));
arr->addObject(String::create(" China!"));
arr->addObject(String::create("values = 123456")); //3.获得大小
int size = arr->count();
CCLOG("The array size is : count = %d", size);
for (int i = 0; i < size; i++)
{
String* e = (String*)arr->getObjectAtIndex(i);
CCLOG("%s", e->getCString());
} //4.根据索引获得某个元素
String* elem = (String*)arr->getObjectAtIndex(2);
CCLOG("%s", elem->getCString()); //5.删除某个元素
arr->removeObjectAtIndex(3); //6.遍历
size = arr->count();
for (int i = 0; i < size; i++)
{
String* e = (String*)arr->getObjectAtIndex(i);
CCLOG("%s", e->getCString());
}
}

Cocos2d-x之Array的更多相关文章
- cocos2d::Vector
C++中的vector使用范例 一.概述 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector是一个容器,它能够存放各种类型的对象,简 ...
- [一位菜鸟的COCOS-2D编程之路]精灵表单的制作以及简易动画的生成
1.第一步:使用Zwoptex 制作精灵表单 2.制作的表单的名称为 cocos2Dpng,cocos2D.plist: 3.精灵的动画效果 主要分为五部分. // on "init&quo ...
- cocos2d中如何使用图片纹理图集的加载来实现一个动画的功能
cocos2d中要实现一个动画,一般采用纹理图集的方式,也就是说把几个连续动作的图片挨个显示切换这样就是动画 一: 首先先看下今天要实现的具体的目的,打飞机的时间屏幕上会有一个喷火的小飞机,飞机的尾部 ...
- cocos2d基础篇笔记四
1.//有两种集合 //第一种是array 特点:插入,删除效率低,可是查找效率高 //另外一种是list 特点:插入,删除效率高,可是查找效率低 //分析这个游戏: 插入的时候:怪物,射弹出现时, ...
- Cocos2d学习之路三(使用Zwoptex创建精灵表单和CCAnimate动画)
创建精灵表单: 创建动画先要把图片整合到一个图片上然后生成plist文件: 方法下载Zwoptex软件:http://www.zwopple.com/zwoptex/ 然后打开选择 create ne ...
- Cocos2D中Action的进阶使用技巧(二)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上回说到解决办法是使用CCTargetedAction类. C ...
- Cocos2D中Action的进阶使用技巧(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 大家对Cocos2d中动作的使用大概都很清楚了,其实本身act ...
- Cocos2D iOS之旅:如何写一个敲地鼠游戏(八):为动画建立属性列表
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- Cocos2d—X游戏开发之CCToggle(菜单标签切换)CCControlSwitch(开关切换)
Cocos2d—X游戏开发之CCToggle(菜单标签切换) 首先继承子CCMenu,是菜单标签中的一种.‘ class CC_DLL CCMenuItemToggle : public CCMenu ...
- cocos2d 中使用jni C++ 调用 Java 方法
1.简单数据类型样例 如果我们Java中有这么一个open的静态方法,它没有參数,有一个int的返回值.怎么在C++中调用它呢? package cb.CbCCBLE; public class Cb ...
随机推荐
- smarty中判断数组是否为空的方法
1,用count来取得数组的下标个数 下面例子中,如果$array为空则不输出任何数据 以下为引用的内容:{if $array|@count neq 0 }... ...{/if} 2,直接来判断 以 ...
- [fw]Real Mode addressing
Real Mode 在 real mode 中,memory 的使用被限制在 1 MByte(220 bytes) 內,可用的 address 範圍為 0x00000 ~ 0xFFFFF. 由 mem ...
- weBDrriver API接口方法小记
3.2.1 输入框(text field or textarea) 找到输入框元素:WebElement element = driver.findElement(By.id("passwd ...
- 理解Throughput和Latency
Throughput,中文译作吞吐量.Latency,中文译作延迟.它们是衡量软件系统的最常见的两个指标. 吞吐量一般指相当一段时间内测量出来的系统单位时间处理的任务数或事务数(TPS).注意“相当一 ...
- JVM(18)之 Class文件
开发十年,就只剩下这套架构体系了! >>> 关于类加载机制的相关知识在前面的博文中暂时先讲那么多.中间留下了很多问题,从本篇博文开始,我们来一一解决. 从我们最陌生而又最熟 ...
- JS-04 JS中的函数都是按值传递的
JS中的函数都是按值传递的 1.传递参数是基本类型 如例子:基本类型传入函数后,函数内部参数生成一个参数副本,把num变量的值赋给num参数,num参数再去参与函数中的运算,但不会影响外面num变量的 ...
- XMPP即时通讯协议使用(七)——利用Strophe实现WebIM及strophe.plugins插件使用
Strophe简介与Openfire配置 Strophe.js是为XMPP写的一个js类库.因为http协议本身不能实现持久连接,所以strophe利用BOSH模拟实现持久连接. 官方文档: http ...
- CentOS7.6系统安装zabbix3.4.8客户端
一. 准备安装包 将本地的zabbix-3.4.8软件包上传至服务器, 二. 安装依赖包 安装依赖包:yum install gcc* pcre* psmisc -y 三. 安 ...
- FTP客户端遇到150连接超时错误的处理办法
环境:阿里云ECS,win server 2012 R2 / FTP Server(FileZilla 0.9.41) 问题描述:账号连接正常,但无法列出目录,提示150连接超时. 解决过程: 1.关 ...
- Vue 侦听属性
Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:侦听属性 <!DOCTYPE html> <html> <head> <meta cha ...