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 ...
随机推荐
- python依赖包整体迁移方法(pip)
做个记录 python依赖包整体迁移方法
- JVM(5)之 GC之标记
开发十年,就只剩下这套架构体系了! >>> 堆分为年轻代和年老代.永久代是非堆内存,它又叫做方法区(一般的说法),主要存储已被加载的类信息.常量.静态变量.而该区域在java ...
- 20180209-xml模块
xml的用法操作如下: xml格式如下: <?xml version="1.0"?> <data> <country name="Liech ...
- 20180119-01-RACSignal的基础
一.获取一个信号的方式 1.单元信号 RACSignal *signal1 = [RACSignal return:@"Some Value"]; RACSignal *signa ...
- Java笔试题-List l = new List()
前言: 最近遇到的一道很基础的题,有时候大家可能离开了编译器就不行了. import java.util.List; /** * * @author catchegg * create date: 2 ...
- shell判断/bin目录下date文件是否存在
- 98-基于FPGA Spartan6 的双路光纤PCIe采集卡(2路光纤卡)
基于FPGA Spartan6 的双路光纤PCIe采集卡(2路光纤卡) 1.板卡概述 板卡采用xilinx Spartan6系列芯片,支持 PCI Express Base Specificatio ...
- JS window对象 返回前一个浏览的页面 back()方法,加载 history 列表中的前一个 URL。 语法: window.history.back();
返回前一个浏览的页面 back()方法,加载 history 列表中的前一个 URL. 语法: window.history.back(); 比如,返回前一个浏览的页面,代码如下: window.hi ...
- Shell03---流程控制
目录 Shell03---流程控制 1. 流程控制语句if基本概述 2. 流程控制语句if文件比较 3. 流程控制语句if整数比较 4. 流程控制语句if字符比较 5. 流程控制语句if正则比较 6. ...
- 激活密钥许可证VMware Workstation Pro 15 激活许可证
虚拟机 VMware Workstation Pro 15.5.0 及永久激活密钥 虚拟机下载地址:https://download3.vmware.com/software/wkst/file/VM ...