
Cocos2dx 3.0 过渡篇
文章平均质量分 82
Cocos2dx 升级到3.0版本后,许多接口的用法都发生了极大的改变,包括开发环境、触摸监听机制,容器的使用等。新手初次从2.0转变到3.0会有许多的不适应。本系列博客就是基于3.0与2.0对比的基础上,对3.0新的功能与用法进行介绍。
star特530
生活是如此的美好,即使那无法预知的未来!
展开
-
Cocos2dx 3.0 过渡篇(三十二)话说ValueMap的一般使用
周末到厦门找死党聚聚,晚上一伙人杀到一还算凑合的大排档准备来个不醉不归。菜都点完了朋友突然说这里没有洗手间...尼玛,当时我们就不乐意了:喝五六个小时的啤酒,没有洗手间你是打算憋死谁?二话不说直接换一家,不过这次一定要谨慎选择,最终看到一家看起来还算正宗的大排档,我下意识拨了下头发,走到前台MM面前,轻声问道:你们这...有洗手间吗?声音低沉且性感,语调中还夹带着些许的忧伤。前台MM瞪大眼睛,好一会才反应过来说道:洗手间?肯定有啊!原创 2014-07-22 08:39:38 · 9242 阅读 · 2 评论 -
Cocos2dx 3.0 过渡篇(三十一)ValueVector和Vector不得不说的故事
有这么一个纠结的选择题:有一天你遇到一个外星人,这时外星人很热情的邀请你到他们星球去玩,你如何选1:去,但是你有可能永远不能在回来。2:不去,但是外星人会消去你的记忆这问题很刺激有木有?!看似简单的一个问题,不同的答案却隐藏着不同的含义。鱼与熊掌不可兼得,类似这种例子生活中会经常碰到。同样的,如果你有去了解过Cocos2dx3.0,也会遇到这样一个令人纠结的情况:那就是:Value 与 Vector(Map)。为什么这么说呢?且听我慢慢道来。原创 2014-07-16 10:36:55 · 12141 阅读 · 14 评论 -
Cocos2dx 3.0 过渡篇(二十九)globalZOrder()与localZOrder()
感谢博主,感谢cocos2dx3.0。是的了,cocos2dx3.0就是这么神奇!如果你还在使用2.0那你就out啦!赶紧拿起电话, 拨打110订购吧!只要998,3.0带回家。钱请直接打到我支付宝账户上面。谢谢!原创 2014-05-06 08:37:00 · 16537 阅读 · 15 评论 -
Cocos2dx 3.0 过渡篇(二十八)C++11强类型枚举
一朋友在微信朋友圈晒了张照片,随手点开大图,带着欣赏的眼光扫了下,恩,几个月不见,又漂亮了...咦?等等,她戴的这是什么?酷炫的造型!金属边框!微型摄像头!这不是传说中的谷歌眼镜么?土豪啊,还好我们已经是朋友了...我先给了她一个赞,然后直奔主题,霸气回复道:我过几天去找你,你戴的是谷歌眼镜吧,哼哼小样,不想死的话...就让我...摸一下下可以么,我不奢求戴,摸一下就满足了...(哎,丢人啊)。-原创 2014-04-28 08:27:17 · 5181 阅读 · 10 评论 -
Cocos2dx 3.0 过渡篇(二十七)C++11多线程std::thread的简单使用(下)
使用std::mutex有一个要注意的地方:在线程A中std::mutex使用成员函数lock加锁unlock解锁,看起来工作的很好,但这样是不安全的,你得始终记住lock之后一定要unlock,但是如果在它们中间出现了异常或者线程直接退出了unlock就没有执行,因为这个互斥量是独占式的,所以在threadA没有解锁之前,其他使用这个互斥量加锁的线程会一直处于等待状态得不到执行原创 2014-04-23 08:25:49 · 10566 阅读 · 6 评论 -
Cocos2dx 3.0 过渡篇(二十六)C++11多线程std::thread的简单使用(上)
昨天练车时有一MM与我交替着练,聊了几句话就多了起来,我对她说:”看到前面那俩教练没?老色鬼两枚!整天调戏女学员。“她说:”还好啦,这毕竟是他们的乐趣所在,你不觉得教练每天都教学员是很枯燥的一件事么?所以调戏学员是他们每天的乐趣,这样工作才更有动力“。我承认听完她的话我愣住了!事后一夜没睡,总结出了两点:1、看待问题一定要从多个角度分析,别太主观,我觉得他们是色鬼,难免会有嫉妒的因素在里面(当然了,这个可能性几乎为0,像我这种风一般的男纸,会嫉妒他们?)。2、程序员的工作日常别总是单一的敲代码,那太枯原创 2014-04-22 08:55:35 · 12303 阅读 · 7 评论 -
Cocos2dx 3.0 过渡篇(二十五)死不了的贪食蛇(触摸版)
上一篇写的贪食蛇的重力感应控制版,这一篇就讲下触摸控制版吧。额,也不知道写了那个贪食蛇教程到底有没有获得沈老师的书,如果没有的话,看我不拿西瓜刀砍掉 偶尔E往事 的那啥!原创 2014-04-22 08:52:22 · 6299 阅读 · 8 评论 -
Cocos2dx 3.0 过渡篇(二十五)死不了的贪食蛇(触摸版)
上一篇写的贪食蛇的重力感应控制版,这一篇就讲下触摸控制版吧。额,也不知道写了那个贪食蛇教程到底有没有获得沈老师的书,如果没有的话,看我不拿西瓜刀砍掉 偶尔E往事 的那啥!触摸版与重力版的代码大部分都一样,不一样的地方就是要将打开重力感应换成创建一个触摸监听。原创 2014-04-16 07:49:34 · 832 阅读 · 8 评论 -
Cocos2dx 3.0 过渡篇(二十四)死不了的贪食蛇(重力版)
近来cocos2dx的论坛刮起了一阵制作贪食蛇的潮流,我也打算来凑个热闹。不过主要目的还是因为在写3.0过渡篇的系列博客时讲的都是理论,缺少实践。这次就用贪食蛇的例子较为系统的介绍3.0与2.0的一些不同之处。(当然了,如果版本能看在我码字辛苦的份上施舍我一本书,那我还是很乐意接受的,我的收获地址是...)。原创 2014-04-15 16:21:23 · 6105 阅读 · 14 评论 -
Cocos2dx 3.0 过渡篇(二十三) C++11一种新随机数获取方法
但是rand函数有一些问题:即使不是大多数,也有很多程序需要不同范围的随机数。一些需要浮点随机数,一些需要非均匀分布的数。而程序员为了解决这些问题而试图转换rand生成的随机数的范围、类型或分布时,常常会引入非随机性(我很不客气的借鉴了C++ primer里的原话)当然了,不要在意上面的这些细节。我更关注的新的随机数获取方法到底好不好用,能不能在根源解决男...啊不,解决让随机数的获取更加简便。新的随机数获取途径包括两个东东,一个叫随机数引擎类,一个叫随机数分不类)。一个引擎类可以生成unsigned原创 2014-04-08 08:23:54 · 6497 阅读 · 9 评论 -
Cocos2dx 3.0 过渡篇(二十二)各种遍历与范围for语句的使用
时至今日都是我咎由自取,错就错,与任何人无关。IT事业的平顺,造就了低调谦虚的我。风度翩翩的气质,导致今日岌岌可危的地步,我今天愿意承担一切后果。其实,我很感谢你们让我跌倒在今天,而不是在我出任CEO的将来。我必须重新吹个发型,坦然面对镜中的自己并作出慎重的决定!我star特,在新浪博客写了一些水平凑合的文章。我辜负了Jacky姬和木头凶,辜负了...(好吧,实在编不下去了,都什么乱七八糟的...原创 2014-04-01 13:10:39 · 7709 阅读 · 7 评论 -
Cocos2dx 3.0 过渡篇 (二十一)自从Label有了freeType做靠山以后...
cocos2dx 3.0版本之前,我们一直都是用CCLabelTTF,CCLabelBMFont,CCLabelAtlas来创建文本标签,但是!3.0版本放出来后...看到这里你心里是不是又颤抖了一下?别害怕嘛,我要说的是:3.0版本出来后这些标签也都是还可以用的啦,只是说我们有了更好的选择。cocos2dx3.0添加了一种新的文本标签,这种标签不同的地方有:使用freetype来使它在不原创 2014-03-27 20:25:44 · 18243 阅读 · 8 评论 -
Cocos2dx 3.0 过渡篇 (二十) 闲扯强制类型转换
我觉的通常情况下用dynamic_cast最好,它检查的更严格些,其次是static_cast,而后两者也就是const_cast和reinterpret_cast较之前两者貌似不太常用(我会告诉你我根本就没用过吗...),而且也不推荐使用,const_cast在用于去除const的地方还是有所发挥的,reinterpret_cast在转换时,不会在内存中进行补足比特位(例如int转换到double,需要补足4字节),这往往是不安全的,而且代码也是不可移植的。所以我主要介绍的还是static_cast和d原创 2014-03-25 12:31:17 · 8377 阅读 · 6 评论 -
Cocos2dx 3.0 过渡篇(十九)新鲜出炉的Value该怎么玩
一开始使用CCArray时,想往里塞int型或者float型的变量都不行,只因为int等类型的身份”过低“,不是Object的家族成员。一心奔小康的我果断向贵族成员:CCInteger,CCFloat等靠拢。后来呢,也就是到了3.0beta后的版本,CCArray和CCDictionary一起殉情了,这直接导致CCInteger,CCFloat在Object的家族地位急剧降低。作为一家之主的Object虽不想看到自己的子孙就此没落,但因为年岁过大也无力改变现状。于是呢,999岁的Object趁着自己还有最后原创 2014-03-21 08:49:46 · 10090 阅读 · 13 评论 -
Cocos2dx 3.0 过渡篇(十八) Cocos2d-x 3.0rc,又一种创建项目方式
准备工作:1、下载最新的cocos2dx 3.0rc0,http://www.cocos2d-x.org/download2、下载python2.7版本,如果之前有下载过python并且是2.7的,那么你可以跳过这步;如果之前下载的是3.3以上版本的,请重新下载2.7版,别问我为什么,因为下面会偷偷告诉你:https://www.python.org/download/releases/2.7.6/3、下载安卓开发环境必备的那些什么NDK啊,SDK啊,ant原创 2014-03-19 08:44:44 · 24946 阅读 · 38 评论 -
Cocos2dx 3.0 过渡篇(十七) std::bind与CC_CALLBACK不得不说的故事
// new callbacks based on C++11#define CC_CALLBACK_0(__selector__,__target__, ...) std::bind(&__selector__,__target__, ##__VA_ARGS__)#define CC_CALLBACK_1(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, ##__VA_ARG原创 2014-03-14 19:04:41 · 15890 阅读 · 21 评论 -
Cocos2dx 3.0 过渡篇(十六)用ClippingNode做游戏的新手引导
CCClipingNode是一个可裁剪节点,简单理解:(1)首先它是一个节点,继承于CCNode,所以它可以像普通节点一样放入CCLayer,CCScene,CCNode中。(2)作为节点,它就可以用作容器,承载其他节点和精灵。我把它叫底板。(3)如果想要对一个节点进行裁剪,那需要给出裁剪的部分,这个裁剪区域,我把它叫模版。所以CCClipingNode裁剪节点在组成上=底板+模版,而在显示上=底板-模版。不知道这样解释会不会好理解一点。原创 2014-03-09 17:24:26 · 13463 阅读 · 2 评论 -
Cocos2dx 3.0 过渡篇(十五)帧动画的存储播放
前两篇博文用恶搞的形式写了action的相关使用,这算是自己的一种尝试,也可以说是心情的发泄。本篇是action三板斧的最后一板,经过深思熟虑后,我决定就用正常人的方式写吧...这次主要介绍动画的创建即存储,要实现的功能有:1、创建四组动画,并存放至Array中;2、创建四个虚拟方向按钮,控制精灵移动与播放相应方向的动画;实现过程如下:1、事前准备:宏定义每原创 2014-03-05 19:29:23 · 7363 阅读 · 3 评论 -
Cocos2dx 3.0 过渡篇(十四)用touch拖动女主打败小三!
boy 和 girl 甜蜜的交往了两年,但是,由于boy是一个文理双修的优秀男儿,小三不得不跳出来了!小三设计出种种阴谋来拆散boy和girl。最后他俩大吵了一架。在冷战期间,小三强势入内,伴随boy左右!女主发现这个情况后,意识到所有一切都是小三搞的鬼,但她又拉不下脸来去和boy道歉。而我们的故事也就是从这里开始的。主线剧情:拖动girl移动到男主旁的红色框框内。分线剧情:girl一进入红框,就能立马被boy文理双修的气质所吸引,飞到他..身边。分线剧情:按照剧情安排,小三必须在女主回来的时候马上原创 2014-03-03 12:09:24 · 6498 阅读 · 6 评论 -
Cocos2dx 3.0 过渡篇(十三) action的用法从一个故事说起
动作到底该怎么玩?说的也就是runAction这货了。如果你觉得本文还是在写像MoveTo,SacleTo这类动作的用法的话,那你就错了。那样不够厚道。当然了,像Sequence,Spawn这类的东西多少也是会涉及到一点的。那到底要写什么呢?我们的故事从这里开始。原创 2014-02-28 19:36:59 · 13493 阅读 · 12 评论 -
Cocos2dx 3.0 过渡篇(十二) lambda表达式的使用
如果要设定表达式能够访问外部变量,可以在 [] 内写入 & 或者 = 加上变量名,其中 & 表示按引用访问,= 表示按值访问,变量之间用逗号分隔,比如 [=factor, &total] 表示按值访问变量 factor,而按引用访问 total。原创 2014-02-25 19:18:02 · 13797 阅读 · 13 评论 -
Cocos2dx 3.0 过渡篇(十一) xml文档的读取与调用
这阶段很忙,灰常忙,人又感冒了。前两天去报了驾校,所以下班回家后都在突击科目一,争取下周就去考。话说我们这边驾校报名费要六千,全国还有其他地方有这么高的吗?--------------------------------前天有人问我beta2 要如何读取xml文档,我刚要说用array的相关接口去读取,才想起beta之后早没有array这玩意了。那么既然之前是用arry读取,那么现原创 2014-02-21 19:39:15 · 10846 阅读 · 8 评论 -
Cocos2dx 3.0 过渡篇(十)资源加载进度条Loading...
本来这篇博文是昨晚就要写的,可是因为今早要去参加考驾照相关的体检,而我最害怕的就是视力没能达到5.0,毕竟这阶段对着屏幕的时间过久。所以呢,昨晚我几乎没碰电脑,没玩手机,早睡早起。体检顺利通过!首先,我要说的是:这次我要写的主题是进度条。 额,等等,先收起你手里愤怒的西瓜刀。我也才知道TestCpp也有这个例子啊。不过TestCpp里的只有label的变化,而我的多加了个进度条。原创 2014-02-18 18:17:43 · 19726 阅读 · 10 评论 -
Cocos2dx 3.0 过渡篇(九)浅谈容器Map
map是键-值对的集合。map类型通常可以理解为关联数组,Vector容器可以使用类似数组a[0],a[2]这种下标的方式获得容器内的元素,Map容器也是可以通过下标的方式获取,但下标是指元素特定的键,而不是通过在数组中的位置。原创 2014-02-16 12:50:42 · 11276 阅读 · 7 评论 -
Cocos2dx 3.0 过渡篇(八)浅谈容器Vector
前两天有人问我说在3.0 beta2版本里,使用array 后编译出错,其实是因为自beta版本开始,已没有Array 和 Dictionary,取而代之的是容器:Vector 和 Map先说Vector吧。如果说C++的vector容器怎么用,如果我说太多肯定一下子就暴露了我菜鸟的身份。所以呢,在这里不过多阐述,也请大神绕路。所以,还是回到Vector的使用问题上吧。该怎么用原创 2014-02-13 19:25:14 · 17712 阅读 · 7 评论 -
Cocos2dx 3.0 过渡篇(七)EditBox和ControlSlider不得不说的故事
正月放假这阶段发生了好多事。对我的影响很大。迫于家庭压力,谈了四年的女友和我提出了分手,是的,她做出了这个决定。我很难受,她也很痛苦。消沉了好几天,现在,我满血满状态的复活了。我是 这么容易放弃的人么?既然舍不得,就不该轻言放弃!即使希望渺茫,还是应该努力争取下!程序员之路,就是应该克服各种艰难险阻,将不可能变成可能。---------机智的少年,你要勇敢往前冲~~~嘿!~原创 2014-02-08 20:04:26 · 11075 阅读 · 6 评论 -
Cocos2dx 3.0 过渡篇(六)中文显示的一种解决办法
for(int i=0;i<array_plist->count();i++){ auto dic = (Dictionary*)array_plist->getObjectAtInder(i);//获取array_plist中的第一个对象 int key_id = 10;//因为在plist文档中,“新年快乐!”对应的id是10 int key_id_plist = ((String*)dic->objForKey("id"))->intValue();//获取字典中“id”的数值,将String原创 2014-01-24 19:27:22 · 10469 阅读 · 6 评论 -
Cocos2dx 3.0 过渡篇(五) 随机数的获取
随机数种子就相当于 随机数的重置开关,你如果想获得随机数,肯定要先把开关打开吧,初始化了随机数种子,也就是相当于打开开关,这时候“种子”就开始起来了,你每隔一段时间获取随机数,它都会反馈给你一个不同的位置数据,而如果你每获取数据就要初始化随机数种子(也就是重启开关),这就相当于“种子”又从起点重新出发,这不是要累死“种子”的节奏么?原创 2014-01-23 20:12:20 · 14017 阅读 · 12 评论 -
Cocos2dx 3.0 过渡篇(四) 创建项目
最后再提一个可大可小的问题,就是在3.0 Alpha1版本下,打开工程的文件“cocos2d-win32.vc2012.sln“都是在cocos2dx解压后的根目录下的,Alpha1后就转移到“cocos2d-x-3.0alpha1\build”目录下了。原创 2014-01-21 19:27:11 · 9785 阅读 · 1 评论 -
Cocos2dx 3.0 过渡篇(三) 触摸机制
假设要实现拖动一个精灵移动,那我们的步骤是:1、 创建一个精灵sprite;2、一个触摸事件 listener ,设置listener的onTouchBegan,onTouchMoved,onTouchEnded;3、将sprite 和 listener关联起来。原创 2014-01-15 22:26:26 · 24592 阅读 · 9 评论 -
Cocos2dx 3.0 过渡篇(二) 事件回调
auto action1 = CallFunc::create( [&](){ auto s =Director::sharedDirector()->getWinSize(); auto label =LabelTTF::create("called:lambda callback", "Marker Felt", 16); label->setPosit原创 2014-01-13 11:00:51 · 19966 阅读 · 9 评论 -
Cocos2dx 3.0 过渡篇(一) 初体验
auto sprite = Sprite::create("file.png");...auto listener = EventListenerTouchOneByOne::create();listener->setSwallowTouch(true);listener->onTouchBegan = [](Touch* touch, Event* event) { do_some_thing(); return true; };listener->onTouchMoved原创 2014-01-09 22:06:50 · 27404 阅读 · 12 评论