|   版权声明:本文为博主原创文章,未经博主允许不得转载。

  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的更多相关文章

  1. cocos2d::Vector

    C++中的vector使用范例 一.概述 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector是一个容器,它能够存放各种类型的对象,简 ...

  2. [一位菜鸟的COCOS-2D编程之路]精灵表单的制作以及简易动画的生成

    1.第一步:使用Zwoptex 制作精灵表单 2.制作的表单的名称为 cocos2Dpng,cocos2D.plist: 3.精灵的动画效果 主要分为五部分. // on "init&quo ...

  3. cocos2d中如何使用图片纹理图集的加载来实现一个动画的功能

    cocos2d中要实现一个动画,一般采用纹理图集的方式,也就是说把几个连续动作的图片挨个显示切换这样就是动画 一: 首先先看下今天要实现的具体的目的,打飞机的时间屏幕上会有一个喷火的小飞机,飞机的尾部 ...

  4. cocos2d基础篇笔记四

    1.//有两种集合 //第一种是array 特点:插入,删除效率低,可是查找效率高 //另外一种是list  特点:插入,删除效率高,可是查找效率低 //分析这个游戏: 插入的时候:怪物,射弹出现时, ...

  5. Cocos2d学习之路三(使用Zwoptex创建精灵表单和CCAnimate动画)

    创建精灵表单: 创建动画先要把图片整合到一个图片上然后生成plist文件: 方法下载Zwoptex软件:http://www.zwopple.com/zwoptex/ 然后打开选择 create ne ...

  6. Cocos2D中Action的进阶使用技巧(二)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上回说到解决办法是使用CCTargetedAction类. C ...

  7. Cocos2D中Action的进阶使用技巧(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 大家对Cocos2d中动作的使用大概都很清楚了,其实本身act ...

  8. Cocos2D iOS之旅:如何写一个敲地鼠游戏(八):为动画建立属性列表

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  9. Cocos2d—X游戏开发之CCToggle(菜单标签切换)CCControlSwitch(开关切换)

    Cocos2d—X游戏开发之CCToggle(菜单标签切换) 首先继承子CCMenu,是菜单标签中的一种.‘ class CC_DLL CCMenuItemToggle : public CCMenu ...

  10. cocos2d 中使用jni C++ 调用 Java 方法

    1.简单数据类型样例 如果我们Java中有这么一个open的静态方法,它没有參数,有一个int的返回值.怎么在C++中调用它呢? package cb.CbCCBLE; public class Cb ...

随机推荐

  1. python 丰田经销商

    import requests import json from dbutil.pgsql import PgsqlPipeline from datetime import date headers ...

  2. ls命令输出文件的绝对路径

    find $PWD | xargs ls -ld 再结合 grep 筛选

  3. IDEA中添加自定义的方法快捷方式

    IDEA中快速添加自己自定义的方法方法,想要什么快捷方法都行 作为一个从MyEclipse转IDEA的程序员,原来写main就能补全main方法,写syso就能补全System.out.println ...

  4. Oracle:同步两张表的相同字段

    有一个需求需要同步两张表的相同字段,比如表A和表B,这两张表是不同的用户下的表,表结构是一样的. 一开始我简单写了一个sql语句,如下: update ord_log1 A set (A.pid, A ...

  5. 解析天启rk3288源码 /kernel/drivers/char/virtd

    virtd为编译后产生的中间文件,可使用ELF格式逆向 1.ELF文件内容解析readelf: 可解析ELF文件的所有内容;strings: 查看ELF文件中的字符串;file   : 查看ELF文件 ...

  6. 三 Bash Shell 结构

    Bash Shell 程序结构主要有 : 变量设定  内置命令 Shell 语法结构 函数 其他命令行程序构成 例子: [root@localhost ~]# vim test.sh #!/bin/b ...

  7. MYSQL5.7版本sql_mode=only_full_group_by问题,重启有效的方法

    1./etc/mysql/mysql.conf.d/mysqld.cnf 或者my.cnf   总之就是mysql的配置文件 2.查看当前的sql模式 select @@sql_mode; 3.添加语 ...

  8. 关于WTSAPI32

    一般在windows编程都是用用从ntdll导出的Native API,现在看到一点COM编程或者其他的一些不常用的接口函数总觉得蛮有意思,准备以后多积累一下. 先简单总结WTSAPI32.以下实在W ...

  9. HTML5:Canvas-基本用法

    <canvas id="tutorial" width="150" height="150"></canvas> & ...

  10. BZOJ1822 [JSOI2010]Frozen Nova 冷冻波 二分+最大流

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=1822 题解 好久没做网络流的,都没有想到网络流... 首先暴力判断一下一个巫妖和一个精灵之间能 ...