数组与字符串三(Cocos2d-x 3.x _Array容器)
"程序=数据结构+算法"
在面向对象的语言中,诸如数组、堆栈、队列等的结构都被封装成了特定的类,按照特定数据结构的算法设计起来,这就是容器类。
Cocos2d-x中,能使用的容器类:C++标准容器类、Cocos2d-x中定义的容器类。其中,列表容器类包括:_Array、Vector<T>和ValueVector;字典容器包括:_Dictionary、Map<K,V>、ValueMap和ValueMapIntKey。
_Array 继承于Ref类,(2.x版本中是CCArray),通过引用计数管理内存。容纳的是Ref及子类所创建的对象指针。
实现: 点击按钮,响应事件为创建100个精灵。
主要实现代码:
1、在Helloworld.h文件中声明
#define MAX_COUNT 100
即,所用到的_Array容器创建的成员变量的起始容量的值
2、在Helloworld.cpp文件中,
//增加菜单项 点击之后出现精灵
auto goItem = MenuItemImage::create(
"go-down.png",
"go-up.png",
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
//设置菜单图片的位置
goItem->setPosition(Vec2(origin.x + visibleSize.width - goItem->getContentSize().width/2 ,
origin.y + goItem->getContentSize().height/2));
auto menu = Menu::create(goItem, NULL);
menu->setPosition(Vec2::ZERO);
this->addChild(menu, 1);
//创建 _Array* 类型的变量list,参数为它的初始容量
this->list = __Array::createWithCapacity(MAX_COUNT);
//list的创建是通过静态方法创建,如果不调用retain函数,当init函数结束时,会自动释放,当别的函数中再使用list时,就会报错
this->list->retain();
//所要创建精灵的个数
for(int i = 0;i < MAX_COUNT; ++i){
Sprite* sprite = Sprite::create("Ball.png");
this->list->addObject(sprite);
//触摸菜单图标后触发的函数
void HelloWorld::menuCloseCallback(Ref* pSender)
{
Ref* obj = nullptr;
log("list->count() = %d",this->list->count());
Size visibleSize = Director::getInstance()->getVisibleSize();
//循环遍历 容器中的数据
CCARRAY_FOREACH(this->list, obj) {
//获得精灵对象
Sprite* sprite = (Sprite*)obj;
//随机生成精灵的x、y坐标
int x = CCRANDOM_0_1() * visibleSize.width;
int y = CCRANDOM_0_1() * visibleSize.height;
sprite->setPosition( Vec2(x, y) );
this->removeChild(sprite);
this->addChild(sprite);
}
}
HelloWorld::~HelloWorld()
{
//前面说过手动设置保持list的内存,现在要手动释放
//释放list里面的所有对象
this->list->removeAllObjects();
//释放list容器对象
CC_SAFE_RELEASE_NULL(this->list);
}
结果:

数组与字符串三(Cocos2d-x 3.x _Array容器)的更多相关文章
- JQuery攻略(三)数组与字符串
在上两章,JQuery攻略(一) 基础知识——选择器 与 DOM 和 JQuery攻略(二) Jquery手册 我们为后面的章节打好了基础,在这一章节中,我们继续. 在这一章节中,我们记录的是JQue ...
- C++学习笔记(三)--数组、字符串
1.数组,C++中不允许数组的下标值为变量,只能是常量或者常量表达式,必须先定义后使用.数组赋初值几种常见方式: int a[] = {1,2,3,4,5}: int a[4] = {2,1,3,4} ...
- c数组与字符串
原文链接:http://www.orlion.ga/913/ 一.数组 定义数组: int count[9]; 赋值: int count[4] = { 3, 2, }; 未赋初值的元素用0初始化.如 ...
- C语言 第七章 数组与字符串
一.数组 1.1.数组的概念 用来存储一组相同类型数据的数据结构.有点像班上放手机的手机袋,超市的储物柜. 特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素. ...
- PHP基础语法: echo,var_dump, 常用函数:随机数:拆分字符串:explode()、rand()、日期时间:time()、字符串转化为时间戳:strtotime()可变参数的函数:PHP里数组长度表示方法:count($attr[指数组]);字符串长度:strlen($a)
PHP语言原理:先把代码显示在源代码中,再通过浏览器解析在网页上 a. 1.substr; //用于输出字符串中,需要的某一部分 <?PHP $a="learn php"; ...
- C语言中字符数组和字符串指针分析
这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么 用到过C,虽然网上这类的文章也有很多,还是决定自己在这 ...
- 「C」 数组、字符串、指针
一.数组 (一)数组 概念:用来存储一组数据的构造数据类型 特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素. (二)数组的定义 格式: 类型 数组名[元素个数 ...
- C语言数组:C语言数组定义、二维数组、动态数组、字符串数组
1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...
- JS中数组和字符串的方法大全
数组的方法很多,ECMScript5又提供了好几种方法.有空把之前的云上的笔记整理了一下,方便自己以后查找使用. 一.ECMScript 3的Array.prototype中定义的方法 1.join( ...
随机推荐
- 最后一个单词的长度的golang实现
给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但不包含任何空格的字符串. 输入: "He ...
- sql server2008 R2打开报错:无法识别的配置节 system.serviceModel解决办法分享
本人是先安装的sql server2008 R2成功可以运行后,再安装VS2010成功后,再打开sql server2008,就出现以下错误,无法连接服务器. 无法识别的配置节 system.se ...
- LinkedList与ArrayList的区别
我们都知道LinkedList和ArrayList相比: 1.LinkedList插入删除相对较快,而查询较慢: 2.ArrayList插入删除相对较慢,而查询很快(详细可查看从源码的角度分析List ...
- Java中关于LockSupport的简单入门记录
LockSupport的JDK的文档描述:Basic thread blocking primitives for creating locks and other synchronization c ...
- Smith Numbers POJ - 1142 (暴力+分治)
题意:给定一个N,求一个大于N的最小的Smith Numbers,Smith Numbers是一个合数,且分解质因数之后上质因子每一位上的数字之和 等于 其本身每一位数字之和(别的博客偷的题意) 思路 ...
- Qt 编程指南 1 从Hello World开始
1 简单的hello QT 注意项目和路径不要包含任何中文字符,特殊字符,空格. 只能有英文,数字,下划线,且不能数字开头. //helloqt.cpp #include <QtWidgets/ ...
- 【Codeforces 115D】Unambiguous Arithmetic Expression
Codeforces 115 D 题意:给一个没有括号的表达式,问有多少种添加括号的方法使得这是一个合法的表达式?输入可能有正负号.加减乘除.数字. 思路1: 这是不能过的\(naive\)的\(dp ...
- Android java.lang.RuntimeException: Unable to instantiate activity ComponentInfo 特殊异常
本来是不想写的,因为这个异常太常见了,而且也容易处理.但是还是决定记录一下,因为之前遇到过,没留心,今天又遇到了,苦逼了,想了好大一会儿才想起来. 通常容易找的就不写了,今天写个特殊的. 现象:当你在 ...
- Nginx-PHP优化设置 + lnmp调优的关键影响因素 + php-fpm + nginx返回码 + tcp调优 + 最大文件描述符
https://www.cnblogs.com/zengkefu/p/5602473.html最大文件描述符 https://blog.csdn.net/fanren224/article/detai ...
- 自建mvc5项目里几个类图
AccoutController.cs AccountViewModels.cs IdentityModel.cs