自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 从英雄联盟谈手游技能系统

手游战斗技能系统

2016-03-16 16:23:05 1394

原创 手游研发—纹理优化相关

在网络上可以找到一些cocos2dx纹理优化方面的文章,但是在安卓平台上测试的时候发现了比较严重的问题。文章链接:文章1:http://cache.baiducontent.com/c?m=9d78d513d98105ef4fece4690d61c0676905d12b2890904b708ed50ed1735a325a7ba6fe62351073958227365cf2174bea8

2015-01-18 21:55:30 1020

转载 某些手机(Andreno gpu)上gpu渲染异常的问题。(文章原题:CCRenderTexture 从后台进入前台变黑的处理(android))

在android 中使用CCRenderTexture发现一个bug,当任务从前台切换到后台,再从后台切换到前台时CCRenderTexture渲染的对象会变成黑色。修正:在CCPlatformMacros.h中找到    #defineCC_ENABLE_CACHE_TEXTURE_DATA      1将1改成0即可解决

2014-11-25 11:26:43 2661

原创 记录一个惨绝人寰的错误(cocos2dx解决方案内工程之间的连接错误)

错误描述:笔者新加了一个自定义类CCRandomClass然后在其他工程里(HelloCpp)使用这个类方法进行尝试,但是一直出现连接错误,提示找不到新加函数的符号,但是附加依赖库已经加上了。过程:随后笔者尝试使用包含.cpp文件的方式暂时性的解决这个问题。但是由于有些代码自动生成,这种方式很不方便,所以这几天一直在琢磨这个问题。之前一直以为是附加依赖库的原因,但是

2014-10-28 22:30:45 1040

原创 探cocos2dx UI引擎(粗略阅读)(源码版本2.2.3)

widgetwidget作为所有ui的父节点,定义通用接口便于复用。通用接口相关的如:子ui相关,touch消息相关,位置信息相关等等。buttonbutton一般都有3种状态,分别为一般态,点击态,不可点击态。button类里边这三个态分别使用三个ccsprite结点来实现(虽然声明的类型是ccnode,但实际创建的是ccsprite,如果允许使用九宫格的话将创建scale9

2014-09-11 13:25:36 1269

原创 最近开发遇到的cocos2dx问题集(版本2.2.3,studio版本1.6.0.0)

1:ui widget无法使用 透明度 渐变的动画(action),因为没有继承自rgba协议。在设置shader的时候也需要设置颜色,否则就有可能会变黑,因为在片段着色器里边乘上这个因子了。ui button设置名字的后缀是button否则无法触发按钮多态。原因未知。ui button设置禁用态后按钮贴图没变。因为没有调用。换行和字体颜色设置的问题我觉得最好还是使用uil

2014-09-11 12:56:34 1873

原创 探cocos2dx裁剪结点、拖尾效果、进度效果、渲染纹理实现(misc_nodes),源码版本(2.2.3)

模块包含4个功能,可以实现任意形状裁剪的CCClipingNode、具有拖尾效果的CCMotionStreak、具有2种进度展示效果的CCProgressTimer、能够渲染到纹理而不是帧缓存的CCRenderTexture。具体效果请参考TestCpp:motionstreak test,clipping test,progress test。相关类:CCClipingNode:

2014-08-30 16:16:09 2935

原创 探cocos2dx各类输入touch、keypad、IME,源码版本(2.2.3)

记得刚开始工作的时候对cocos2dx的输入看得云里雾里,而这几天要写一些博文总结一下过去一年所学到东西,想了想借此时机把它总结一下。第一次接触手机开发对移动平台下的消息比较陌生,但是将手机上的各类事件与window的消息做一个对比的话,会比较便于理解。移动设备的touch事件相当于window平台上的鼠标事件,移动设备的keypad只有回退按钮和菜单按钮,移动设备ime输入与window

2014-08-29 20:47:59 1385

原创 探cocos2dx文本显示实现(label_nodes),源码版本(2.2.3)

追本溯源的话,一个文本的显示在计算上也就是点阵图,而一行文本也就是一系列点阵图按照顺序排序显示而成的。早期的计算机图形实现的图案可以说都是一个个几何形状组合而成,到了近代计算机图形技术的发展,加入了纹理技术,使得图形可以表现得越来越丰富。比如说类似于计算机上各种各样的字体,使用几何图形组合的方案已经很难达到目标的效果了。在cocos2dx里边,文本显示的实现也是基于纹理技术的,当然出于性能上的考量

2014-08-29 15:59:39 1079

原创 探cocos2dx特效实现(effects),源码版本(2.2.3)

cocos2dx实现的特效非常多,粗略算了下差不多有22种,如果需要查看具体表现效果的话可以运行TestCpp的effects test。cocos2dx特效渲染使用opengl的fbo技术。fbo全称frame buffer object,如vbo一样,是opengl的一种优化渲染技术,用于提高渲染性能,不同于vbo用于顶点属性,当启用fbo之后的渲染命令会作用于纹理、RBO中,

2014-08-28 13:27:30 1871

原创 探cocos2dx粒子特效模块(particle_nodes),源码版本(2.2.3)

整体来说,粒子特效模块的实现还是比较简单的,主要涉及3个类,分别封装了不同的功能。粒子特效的功能实现可以简单的分解成三个过程。坐标计算,更新坐标,渲染。模块相关类:CCParticleBatchNode,粒子特效渲染在这个类里边完成。CCParticleSystem,粒子特效坐标计算在这个类完成,它里边包含有粒子特效2个模式的所有参数。CCParticleSystemQuad,

2014-08-20 20:29:10 1326

原创 探cocos2dx纹理模块(textures),源码版本(2.2.3)

模块相关类(模块名texture):CCTexture2D:在cocos2dx里边所有的2d纹理都由这个类来表示。它提供了多种方式来构建一个cocos2dx的纹理对象,比如说通过多种格式的图像文件,甚至是buffer,创建方式调用了CCImage类对象。除了创建方式,还有设置纹理参数的接口。在opengl中,设置纹理过滤函数参数的意义在于从纹理空间映射到帧缓冲图像空间时所需要做的操

2014-08-17 21:28:01 1598

原创 探cocos2dx对游戏精灵(sprite_nodes)的实现。(源码版本2.2.3)

cocos2dx负责精灵功能相关代码在sprite_node里边,在这个文件夹里边有几个文件,主要涉及有几个类(所有名字以node结尾的文件模块均为渲染结点):CCAnimation:这是一个容器类,保存CCAnimationFrame类对象(也即动画帧),在使用action播放动画的时候需要用到这个对象。CCAnimationCache:动画类的cache,相当于

2014-08-17 12:29:54 1753

原创 coco2dx内存管理(源码版本:cocos2d-x-2.2.3)

模型入口autorelease();在这个函数里边会调用位于栈上第一个CCAutoReleasePool对象进行addobject操作。addobject操作里边首先会获取当前栈顶的CCAutoReleasePool对象,如果没有对象那么会执行push操作,也即压入一个CCAutoReleasePool对象,最后使用CCAutoReleasePool对象addobject添加需要autorelea

2014-07-22 21:33:03 1563

原创 cocos2dx启动流程分析(源码版本:cocos2d-x-2.2.3)

想要了解cocos2dx的启动流程可以从hellocpp示例项目的源码看起,因为这是cocos的入门项目,就如同我们以前学习第一个程序的hello world一样。在hellocpp工程中,win32目录下只有一个main文件,而Classes目录下则是包含有从cocos2dx引擎继承的类它们是:CCAPPlication和CCLayer,在这个目录下还有一个包含有宏定义的头文件。

2014-07-17 21:47:01 3331

转载 (转)#define UNUSED_PARAM(v) (void)(v) 的作用

#ifndef   UNUSED_PARAM #define   UNUSED_PARAM(v)   (void)(v) #endif 假如一个有返回值的函数 如调用时是没有使用它的返回值,编译器会给出一个警告 如果用void强制转换一下,则明确告诉编译器不使用返回值 也就是为了消除警告转载连接:http://www.cnblogs.com/verygis/

2014-03-19 14:10:03 4815

原创 定位bug经验之谈

写代码,编程序难免出现bug,甚至有时候有些Bug会溜到你手上让你处理的时候,使用什么技巧来找出这个隐藏在代码世界中的错误呢?首先,你得明白,出现Bug的功能到底是什么功能,也就是业务逻辑(流程)是什么,大部分情况下你都能以此来定位出现bug的原因。如果出现了比较棘手的情况,比如说出现了一些随机的bug。在计算机的世界里没有‘巧合’的说法,只有必然。那么,一些看似随机的bug是什么原因所导

2013-11-07 17:10:05 877

原创 如何成为一个优秀的码农

读代码进入一个项目的时候需要重头开发的机会很少了,而且在团队中与其他人合作开发的时候常常需要读别人的代码,这样你才不会重复造轮子。不迷信当出现Bug的时候能够心平气和的阅读代码,在我读过的一本书中(好像是代码大全),bug出现98%是因为程序员个人失误造成的,只有2%是系统原因造成的。重复造轮子在工作中,造轮子没什么大问题,问题是,我们写的代码不会没有bug不会考虑到所有情况。

2013-09-22 12:13:35 2028

原创 为什么使用if(0 == a)而不是if(a == 0)

有幸在一次项目中遇到这个问题,可能是键盘的原因将if(var == SOMEDATE)写成if(var = SOMEDATE),最后这个小错误导致该函数执行结果不正确以及花了几个小时的调式时间。//SOMEDATE为常量。说起这个,不由得想起以前看到的编程箴言中一句话:宁可要编译时错误也不要运行时错误。看看上面的代码if(var = SOMEDATE)错了吗?没错,除非SOMEDATE的值

2013-04-17 01:34:42 2331

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除