COCOS2D - 技术教程文章

cocos2dx使用tolua关于字符串处理的一个问题

正在使用cocos2dx的tolua binding在此过程中发现的一个问题。假设一回或输入是std::string当我们不同意包括二进制数据,和std::string我同意,这样一来就导致了不正确的使用等。这可能会导致一系列的问题,特别是,我们需要使用std::string议信息的时候。造成问题的解决办法是tolua生成的代码对于std::string都没有添加length參数,这样就造成了一旦是二进制数据而且遇到\0就会被截断。改动的办法事实上也非常easy,仅仅须要改动一...

cocos2dx学习之路----第十章(Node节点生命周期详解)【图】

这一篇我们就来看看Node节点的生命周期问题。对于Node节点的生命周期,也称回调事件的回调。当对节点进行操作时,比如被添加或者移除,它默认都会调用自己的一些事件方法。现在就让我们看看属于它事件的回调方法有哪些,如下所示:virtual void onEnter(); //被添加到场景中的节点时调用 virtual void onEnterTransitionDidFinish(); //被添加到场景中的节点完成时调用 virtual void onExitTransitionDidStart(); //开始从场景中...

cocos2dx-lua 简单的字体变色拼接实现【代码】

这里主要做的是游戏公告里面用到的,因此我加入了简单的html <font>标签解析,是为了给运营小白预览,但其中的size 属性没有,因为后来没有这个需求了,所以也就懒得改了。  实现思路很简单:设置好行宽和行高,然后一个一个字往上面添加,直到达到行宽上限或者换行符,就换行,再循环。--简易html label --[[暂只对以下标签进行实现<font> 标签进行实现,可添加 size 和 color属性<br> 换行 --]]--[=[demo:html = "<font size=\...

cocos2d-x 3.4 + android studio 1.1.0 + VS2012 开发环境搭建【图】

cocos2d-x 是一款跨平台的游戏引擎,虽然现在只学到了一点点皮毛,但是确实感受到了一款游戏引擎的强大功能,让我这个做游戏的小白也算过了一把做游戏的瘾。但是因为配置的复杂性,让我在一开始走了不少弯路,现在记录下来整个安装配置的过程。安装配置过程中需要用到的安装包主要有下面几个:cocos2d-x 3.4:这个是当然必须要的了,目前最高版本是 3.6 版,但是好像和 3.5 版都有不少问题,还是先用 3.4 吧。android studio 1.1.0...

cocos2dx3.6 实现带光标的输入框【图】

多的不说,我这个学渣,我写的代码比较搓!忍耐下吧!CursorTextField.h#ifndef _CursorTextField_H_ #define _CursorTextField_H_#include "cocos2d.h"USING_NS_CC;class CursorTextField : public TextFieldTTF, public TextFieldDelegate , public IMEDelegate { private:// 点击开始位置Point m_beginPos;// 光标精灵Sprite * m_pCursorSprite;// 光标动画Action *m_pCursorAction;// 光标坐标Point m_cursorPos;//输入框长度f...

【Cocos2d入门教程二】Cocos2d-x基础篇【代码】【图】

上一章已经学习了环境的搭建。这一章对基础概念进行掌握。内容大概有:1.导演2.场景 3.节点4.层4.精灵 1.导演(Director)导演存在的主要作用:环境设定(帧率 初始化openGl和渲染器)场景管理执行主循环游戏就是个死循环 不断不断的渲染 就跟视频没两样 一帧一帧的绘制出来 话说提一下一帧为1/60秒 也就是说cocos2d里一秒渲染60次导演的管理: 计时器 事件管理器 动作管理器导演继承于REF 一个单例类 获得导演类Director实例语...

分析Cocos2d-x横版ACT手游源码 1、公共

直接上代码 不说什么 这一款源码 凝视及多 PublicDef.h 公共头文件#define NF_PLATFORM 1 //当前版本号(默觉得普通版)//版本号列表 #define NF_PLATFORM_NORMAL 1 //normal #define NF_PLATFORM_91 2 //91 playform #define NF_PLATFORM_PP 3 //PP playform #define NF_PLATFORM_UC_ANDROID 4 //UC playform #define NF_PLATFORM_360_ANDROID 5 //360 playform #define NF_PLATFORM_DK_ANDROID 6 //DK playfo...

Cocos2d-X 3.2学习——DrawNode使用注意

2014-09-21最近用Cocos2d-x 3.2 Lua写个小游戏,用DrawNode的时候发现的问题。1、GL Verts不断增长,代码如下local draw = cc.DrawNode:create() local points = {cc.p(0,0), cc.p(0 + size, 0), cc.p(0 + size, 0 + size), cc.p(0, 0 + size)} draw:drawPolygon(points, table.getn(points), s.CUBE_COLOR[type], 0, {}) draw:setTag("draw") node:addChild(draw)原因:由于设置了Tag,所以我每次都是取同一个DrawNode进行绘制,这...

cocos2dx 2.x mac proj 开启模板

为一个cocos2dx 2.x游戏配了下mac工程,运行后发现clippingNode没起作用,运行TestCpp中的clippingNode示例是起作用的,对比AppController.mm,发现是applicationDidFinishLaunching中少了一段代码,补充后如下(黄色部分为补充代码):-(void) applicationDidFinishLaunching:(NSNotification *)aNotification { // create the window // note that using NSResizableWindowMask causes the window to be a little // smaller ...

从Cocos2d-html5 v2.2.x到Cocos2d-JS v3.0 alpha2升级指南【代码】

1. 事件管理机制1.1 在2.2.2版中分散的事件分发器cc.TouchDispatcher, cc.MouseDispatcher, cc.KeyboardDispatcher, cc.AccelerometerDispatcher的所有功能都已经被合并到cc.eventManager,所以事件(鼠标,触摸,键盘,陀螺仪, 用户自定义)都将由cc.eventManager负责分发,也都将通过它进行注册。更多关于cc.eventManager的信息可以查看这篇详细文档1.2 由于新的事件管理机制支持开发者在任何对象上绑定事件,所以在2.2.2版中的...

cocos2dx-3.0(13)------SpriteBatchNode与SpriteFrameCache渲染速度【图】

大家都知道一个游戏里面会有大量的图片,每一个图片渲染是须要时间的,以下分析两个类来加快渲染速度,加快游戏执行速度 一、SpriteBatchNode 1、先说下渲染批次:这是游戏引擎中一个比較重要的优化指标,指的是一次渲染凋用。也就是说,渲染的次数越少,游戏的执行效率越高。 2、SpriteBatchNode就是cocos2d-x为了减少渲染批次而建立的一个专门管理精灵的类。 有人会问。怎么高速知道究竟渲染了...

cocos2dx3.0 对象池【图】

class CC_DLL AutoreleasePool { public://创建一个存放ref的对象池,并且放入PoolManager对象池管理器中AutoreleasePool();//创建一个存放ref的对象池,并且放入PoolManager对象池管理器中,并取个名字AutoreleasePool(const std::string &name);~AutoreleasePool();//添加一个ref对象到对象池中void addObject(Ref *object);//循环遍历容器并让容器中的ref对象调用release,最后清理容器,设置_isClearing 为true//(调用release...

Cocos2d-x 3.0 Schedule in Node【图】

***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************啊哈~,做完这个开始准备做一些真正的小游戏耍一耍咯~打地基,很重要,地基打好了,可以开始别的东东啦 ~\(≧▽≦)/~啦啦啦这次学习的东东,是计划任务,顾名思义,不需要自己动手,它自己按照一定顺序执行的东东。最常见的,就是很多手游里的一些开始界面中,动态的背景。在上一次学习中,学...

Cocos2dx 3.0 提高篇(七)EditBox和ControlSlider不得不说的故事【图】

初八开始上班,我竟然能马上进入工作状态,真是蛮佩服自己的。正月放假这阶段发生了好多事。对我的影响很大。迫于家庭压力,谈了四年的女友和我提出了分手,是的,她做出了这个决定。我很难受,她也很痛苦。消沉了好几天,现在,我满血满状态的复活了。我是 这么容易放弃的人么?既然舍不得,就不该轻言放弃!即使希望渺茫,还是应该努力争取下!程序员之路,就是应该克服各种艰难险阻,将不可能变成可能。---------机智的少年,你...

cocos2d-x 3.0 版本 骨骼动画设置shader【代码】

因为骨骼动画是由多个sprite组成, 所以需要遍历每个sprite 才能修改整体, 开头这样设置,在游戏中发现走路状态没问题,攻击状态就有部分sprite没效果for (auto & object : armObj->getBoneDic()){if (cocostudio::Bone *bone = dynamic_cast<cocostudio::Bone *>(object.second)){Node *node = bone->getDisplayRenderNode();if (nullptr == node)continue;cocostudio::Skin *skin = static_cast<cocostudio::Skin *>(node);skin...

cocos2d-x 3.x build 问题

今天在fedora下编译cocos2dx工程时,遇到了链接问题,在libcocostudio中有大量未定义的libui函数,就像是cocostudio库没有添加ui库的链接依赖。该工程的确的用到了cocostudio和ui库,按说cocos2dx的默认cmake文件是不应该存在这样的问题才对。查看cocostudio和ui的CMakeLists.txt,果然没有target_link_library一项。手动在cocostudio中加入ui的链接项,在ui中加入cocos2d的链接项后,果然生成完成了。奇怪的是网上大量的cocostudi...

详解cocos2dx 3.0的release版本在android平台的签名过程

当您的游戏准备发布前,需要编译成为release版本,命令中需要增加 -m release,编译命令如下:cocos compile -p android -m release 在编译结束后,生成xxx_release_unsigned.apk,此时会提示进行签名,需要输入.keystore的路径。 .keystore的生成方法:使用keytool,命令如下: ?1keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048-validity 10000 Keytool 选项描述-genkey生...

ubuntu 下配置/编译/运行 cocos2dx项目【代码】【图】

由于项目原因,需要把一个使用cocos2dx的项目放到linux下运行(在windows下使用VS编写,可以正常运行),晚上调试了大概3 ~4小时,终于把项目运行了起来。在这里记录一下注意的事项,方便自己也能提醒大家不要犯一样的错误。我使用的是ubuntu kylin 14.04 , cocos2dx版本是2.2.3。项目工程文件如下: 已经包含了cocos2dx的文件包,自己的项目是在projects中。 projects文件夹内容如下: Classes文件夹中是项目的源文件,包括一些...

cocos2dx基础篇(10)——开关按钮CCControlSwitch【代码】【图】

【本节内容】 开关类CCControlSwitch继承于控件类CCControl。 控件类CCControl主要向子类提供了一系列的控件触发事件。当子控件触发相关的事件后,就会执行相关的控件事件回调函数。这与之前讲的CCMenu中的菜单按钮回调是类似的。 控件类CCControl主要有三个子类: (1)开关控件CCControlSwitch (2)滑块控件CCControlSlider (3)按钮控件CCControlButton 本节讲的是其子类其中之一:开关类...

(cocos2dx-3.3)3D坐标系

openGL使用右手坐标从左到右,x递增 从下到上,y递增 从远到近,z递增 OPENGL坐标系可分为:世界坐标系和当前绘图坐标系。世界坐标系以屏幕中心为原点(0, 0, 0)。你面对屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的为z正轴。长度单位这样来定: 窗口范围按此单位恰好是(-1,-1)到(1,1)。当前绘图坐标系是 绘制物体时的坐标系。程序刚初始化时,世界坐标系和当前绘图坐标系是重合的。当用glTranslatef(),glScalef(), glRotate...

cocos2dx——九宫格CCScale9Sprite【图】

本文转载于:http://shahdza.blog.51cto.com/2410787/1543284【唠叨】 本来是想学学控件类CCControl的另一个子类按钮控件CCControlButton的。但是发现里面有一个参数牵扯到CCScale9Sprite这个类。看到CCScale9Sprite,很容易联想到精灵类CCSprite。两者又有什么区别呢?因此我就去网上收了一些有关CCScale9Sprite的资料来学习。 【致谢】 http://blog.csdn.net/zaojiahua/article/details/21295535 http://blog.csdn.net/...

cocos2d-x 3.0正式版 vs2013配置

cocos2d-x 3.0正式版与之前的版本号差异较大,曾经的教程非常多都不使用了。 1.从cocos2d-x官网http://www.cocos2d-x.org下载3.0版的压缩包,随便解压一个位置。 2.从python官网https://www.python.org/下载2.7版本号的python,安装并配置环境变量。 3.安装vs2013. 4.进入cocos2d-x的解压文件夹,进入build文件夹,双击cocos2d-win32.vc2012.sln,由于是2012的项目,所以提示...

cocos2dx3.6 实现带光标的输入框(二);光标可移动

现在光标终于可移动了,然后其实主要是逻辑问题,也没什么技术含量,所以总是一大堆位置判断!再者自己能力比较水,所以代码比较挫,这里代码只有更新那部分,具体的回车什么的自己去弄就好了,其实跟这个思想差不多吧!个人觉得。代码:CursorTextField.h#ifndef _CursorTextField_H_ #define _CursorTextField_H_#include "cocos2d.h"USING_NS_CC;class CursorTextField : public TextFieldTTF, public TextFieldDelegate { priv...

解决cocos2dx在VS2012中文版环境下不支持中文的问题【代码】

首先要明确的一点是:cocos2dx是支持中文的。因为其编码格式为UTF-8(无签名)——这只是我在网上找到的结论,并非从官方获取,因此不能十分确定,不过应该无误。  那么,为什么在VS2012环境下,cocos2dx不能正确显示中文呢?  这是因为二者编码格式不一致。VS2012中文版的默认编码格式为GB2312-80(我不确定英文版的格式如何,总之应该不是UTF-8)。在GB2312-80编码格式中,一个中文占2个字节,而在UTF-8格式中,一个中文占3个...

Cocos2d-x 使用物理引擎进行碰撞检测【代码】

【转自】: http://blog.csdn.net/cbbbc/article/details/38541099通常在游戏简单逻辑判断和模拟真实的物理世界时,我们只需要在定时器中判断游戏中各个精灵的条件是否满足判断条件就可以了。例如,在飞机大战中,判断我方子弹和敌机是否发生碰撞一般在定时器中通过敌机所在位置的矩形是否包括了子弹的位置来判断是否发生碰撞。在消除类游戏中,判断在y轴或x轴上是否要消除相同物品一般在定时器中通过循环来检测在某个方向上是否有连...

cocos2d-x 3.1 集成 云风pbc【代码】【图】

cocos2d-x 3.x版本号变动比較大,从改用cmake管理整个项目,到使用python集成一体化的项目工具。这些都是我喜欢的。我能够非常easy的在我的ubuntu上面搭建好开发环境,并且根本就不用考虑IDE的事情,sublime-text or emacs足矣。唯一须要自己动手的就是制作一个比較好的调试工具。我是使用lua+cplusplus开发,所以调试就比較的难受,临时仅仅能这样,后面考虑自己实现一个远程lua调试工具。触控有公布一款IDE,但是眼下没有linux平台...

cocos2d-x生命周期

1.启动当玩家点击游戏后,对游戏进行初始化,进入函数。virtual bool applicationDidFinishLaunching();创建图层,并装载进场景,并将场景引入导演对象。2.暂停当游戏从前台进入后台时,进入函数:virtual void applicationDidEnterBackground();停止渲染和音乐播放。3.恢复当游戏从后台进入前台时,进入函数:virtual void applicationWillEnterForeground();重新启动渲染和音乐播放。4.退出一般为退出按钮的回调响应,在回调中调...

cocos2d-x 3.0 Loading界面实现【图】

这个世界每一天都在验证我们的渺小,但我们却在努力创造,不断的在这生活的画卷中留下自己的脚印,也许等到我们老去的那一天,老得不能动只能靠回忆的那一天,你躺在轮椅上,不断的回忆过去,相思的痛苦忘不了,相恋的甜蜜浮现在心头,嘴角不觉一笑,年少时的疯狂,热情,理想和抱负,都随着岁月的流去而化作人生的财富,或多或少,犹如那夕阳西下的余辉,在慢慢消失着不见。。(不文艺你会死?)好吧,最近天天在忙着写游戏,天天...

cocos2dx实现拾取注意事项

用的是cocos2dx 3.x,如果是真机测试,glview = cocos2d::GLViewImpl::createWithRect(...)和glview->setDesignResolutionSize(...)都得传设备的分辨率,才能使拾取的结果正确。 bool AppDelegate::applicationDidFinishLaunching(){ // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView();#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32||CC_TARGET_PLATFORM == C...

cocos2d-js 入门一 ([isNaN()和isFinite(),字符和Number之间的转化)

isNaN() : 用于检查其参数是否是非数字值。// 提示:是非数字哦。(not a number)document.write(isNaN(0) ) //返回falsedocument.write(isNaN(5-2) ) //返回falsedocument.write(isNaN ("Hello") ) //返回trueisFinite(number) 函数用于检查其参数是否是无穷大。如果number是有限的,则返回true. 如果 number 是 NaN(非数字)或者是无穷大,则返回false;2):字符:字符串的简单操作例子:var a = "cssrain";var b = a.charAt(a.leng...