数组与字符串三(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( ...
随机推荐
- Python3编写网络爬虫04-爬取猫眼电影排行实例
利用requests库和正则表达式 抓取猫眼电影TOP100 (requests比urllib使用更方便,由于没有学习HTML系统解析库 选用re) 1.目标 抓取电影名称 时间 评分 图片等 url ...
- golang变量的注意
方法内部的变量使用方法: /* 定义三个变量,它们分别初始化为相应的值 vname1为v1,vname2为v2,vname3为v3 编译器会根据初始化的值自动推导出相应的类型 */ vname1, v ...
- transition: 0.2s all ease;
/* 全部样式 0.2秒 缓动*/ transition: 0.2s all ease;
- <20180930>故障解决记录Cisco RV系列低端路由
故障描述: 今日网络瘫痪 , 浏览器提示报 DNS出错, 故障现象: 网关能正常分配到IP但内网机器却无法上网. 其中一个WiFi设备竟然还可以通讯(聊天工具)! 故障思路和排查: 1.1 怀疑是上次 ...
- jweixin-1.1.0.js微信接口“分享给朋友”文字和图片配置
在npm官网找到了:微信官方 js-sdk CommonJS 版https://www.npmjs.com/package/weixin-js-sdk 步骤一:引入JS文件在需要调用JS接口的页面引入 ...
- MessageQueue 相关概念
/** * Implements a thread-local storage, that is, a variable for which each thread * has its own v ...
- 全栈JavaScript之路( 二十二 )IE 专有扩展——文档模式
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/hatmore/article/details/37611911 ie8 引入了一个新的概念.&quo ...
- trace文件解读
*********************************************************************示例:全表扫描的10046文件解读************** ...
- github(1)安装及使用图文详解
教程https://blog.csdn.net/qq_32166627/article/details/54427622 下载地址:https://desktop.github.com/
- vue 路由的基本使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...