前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >cocos2d基础篇笔记四

cocos2d基础篇笔记四

作者头像
全栈程序员站长
发布2022-07-12 18:06:04
8150
发布2022-07-12 18:06:04
举报

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

1.//有两种集合

//第一种是array 特点:插入,删除效率低,可是查找效率高

//另外一种是list 特点:插入,删除效率高,可是查找效率低

//分析这个游戏: 插入的时候:怪物,射弹出现时,删除的时候:碰撞时,怪物、射弹出界时。 //遍历:fps(每秒中填充图像的帧数(帧/秒)相应的时间,怪物是2秒出现一次,而遍历是60次每秒,可见遍历用的较多,所以我们选择array。 CCArray*_targets;//定义怪物集合,3.0一般用vector定义集合 CCArray*_projs;//定义射弹集合

2.集合的初始化和释放

_targets=new CCArray;

_projs=new CCArray; //cocos2d中Class:create不须要手动释放

//new须要手动释放,我们把它放在析构函数释放。

HelloWorld::~HelloWorld(){ if(_targets!=NULL) _targets->release(); if(_projs!=NULL) _projs->release(); }

3.开启update函数(默认是没激活的)

this->schedule(schedule_selector(HelloWorld::update));//开启update函数

4.集合的遍历:

void HelloWorld::update(float dt){ //dt为刷新周期=1/fps CCObject*itarget; CCObject*iproj; CCArray*targetToDelect=new CCArray; //假设当有交集时就直接从容器移除而且清楚靶子或者射弹会导致下次遍历越域,因此我们又一次定义两个集合来保 存,发生碰撞的靶子和射弹,然后在遍历这两个集合在进行移除和清理,就不会发生越域的情况。 CCArray*projToDelect=new CCArray; CCARRAY_FOREACH(_targets,itarget){ //为了方便遍历容器里面的元素,cocos2dx提供了CCARRAY_FOREACH这种宏 CCSprite*target=(CCSprite*)itarget; CCRect targetZone=CCRectMake(target->getPositionX(), target->getPositionY(), target->getContentSize().width, target->getContentSize().height);

CCARRAY_FOREACH(_projs,iproj){ CCSprite*proj=(CCSprite*)iproj; CCRect projZone=CCRectMake(proj->getPositionX(), proj->getPositionY(), proj->getContentSize().width, proj->getContentSize().height);

if(projZone.intersectsRect(targetZone)){ targetToDelect->addObject(itarget); projToDelect->addObject(iproj); } } //遍历怪物 } / /遍历靶子 CCARRAY_FOREACH(targetToDelect,itarget){ _targets->removeObject(itarget); CCSprite*target=(CCSprite*)itarget; target->removeFromParentAndCleanup(true); } CCARRAY_FOREACH(projToDelect,iproj){ _projs->removeObject(iproj); CCSprite*proj=(CCSprite*)iproj; proj->removeFromParentAndCleanup(true); }

}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/118493.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021年12月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档