cocos2dx 3.x 使用dragonbones 4.5 -- (二) 这次主要来说说基本结构和内存机制。 当然还是要拿spine来做个比较。spine的运行库,内存管理是完全按照cocos引擎的RC机制来的,用起来和普通的node并无差别。函数原型大概是这样:SpineNode* create(boneFile,atlasFile,pngFile) 依次传入骨骼文件名、图集json名、图片名,然后就会返回给你一个node,直接就开用了
cocos2dx 3.x 使用dragonbones 4.5 -- (一) spine的坑基本填的差不多了,坑完了spine,又开始坑dragonbones了。 为什么呢,因为dragonbones免费,而且编辑器和flash类似,现在的美术更熟悉。加上spine的坑确实有点麻烦,想换一个。 但是真正的换了,开始研究之后,才发现事情并么有那么简单。这个东西的坑也不少。 后面会慢慢的分析各种利弊,当然也会和spine对比。先介绍下环
屏幕适配 -- setContentScaleFactor的用处 看了官网这篇关于适配的文章,涉及一个函数叫setContentScaleFactor。尤其是最后一句:ResolutionPolicy::FIXED_HEIGHT适合高方向需要撑满,宽方向可裁减的游戏,结合setContentScaleFactor(RH/DH)使用。ResolutionPolicy::FIXED_WIDTH适合宽方向需要撑满,高方向
cocos2dx 大地图分块加载的研究(初) 项目里面需要加载一个很大的地图,目测最少是4096x4096的分辨率。 先不考虑什么引擎最大支持多大的图啊,大图加载效率啊等等这些问题,光是4k x 4k的分辨率,ARGB8888,加载进去,就是64M的内存,这还只是一个背景。再来点其他七七八八的东西,轻松超过120,这个内存在某些设备上就已经很危险了。 为了实现这个目标,处理的方式大概有2种:
stl容器备忘 最近都用lua,突然换成C++写一个测试项目。 结果第一步就悲剧了。需要做一个map,来存sprite。就随便找了个unordered map来用。 unordered_map curTiles; unordered_map newTiles; 然后发现各种编不过~~~这里还有一个很神奇的事情,在mac的target
向量计算 题外话:果然一直做什么卡牌策略和所谓的RPG是没有前途的 问题:比如要做一个打飞机,其中有一种追踪弹,锁定一个目标之后,会一直追着这个目标走,除非这个目标死。 一听到这个问题,一想到的,肯定就是取的目标的位置,然后把子弹move过去。但是打飞机这种游戏,肯定是每帧都会做碰撞检测什么的,moveTo那些肯定就不好用了。虽然也能用,只是不好用
粒子系统 & ParticleDesiner 配置 以前没用过粒子。。。是不是low爆了。。。 现在要用粒子了,做一个下雨的效果。编辑器ParticleDesiner,里面有一个类似的自带效果,调调参数,生成plist,放进程序。突然发现一个问题,下雨的那个宽度,不知道怎么改。 然后照着test,里面也有个rain,代码改了改,还是没发现宽度怎么设置。如果我做一个大的,用缩放,缩放的是整个节点,里
cocos2dx 实现gallery (五) boss还想实现一个自动滚的效果,就是我手指一下快速的划过,不是慢慢拖动,然后这个滚滚会自己滚一段时间,再慢慢停下。 首先需要判断这个东西,是划过还是拖动。直接取按下的时间和松开的时间的差值,小于eps就算是划过,按自动滚处理,不然就按之前的拖动处理,我取的是0.5秒 然后怎么模拟这个滚一滚的慢慢停这个效果。。。我们还是来说物理吧。。。
cocos2dx 实现gallery (四) 之前说到了一个效率问题还没解决。 这个问题是这样的: 每个数据,需要一个节点来显示。如果数据项很多,比如几十几百个吧。那就需要几十几百个node,效率上就会很有问题。 仔细看我们那个gallery,一屏只能显示5个,其他的就被自己前面的node挡住了。我们给这5个节点编号1~5,当滚动的时候,当第六个节点完全出现的时候,第一个节点已经到
sola病毒批量恢复工具 —— 大一的回忆 整理硬盘的时候,突然发现一切的图标,才想起我还做过这么一个东西。。。。而且还有近百万的下载量,如果算上各种山寨的,下载量可能是几百万 以下为主要为吹牛B内容,预警。 这个地址,应该是我原来的东西,百度一下,发现CSDN的下载区也有很多,比如这个,还有这个,还有这个。我之所以确定这些是我那个小程序,因为类似 注意事项(必看): 一、使用时的文件
spine的问题之二、、、 之前说到spine在end回调里面调用setAnimation会蹦,那个是现象之一。又发现一个更具体的原因。 setAnimation之后,会调用到getCurrent函数:spTrackEntry* spAnimationState_setAnimation (spAnimationState* self, int trackIndex, spAnimation*
cocos2dx 实现gallery (三) 我是lua的代码,呜啦啦啦啦~~不过不影响嘛。 首先设置一些参数: self.r = 260/2 --滚轮半径 self.vd = 330 --视点距离 self.arcPos = {135,180,225,270,315,360,45,90} --平铺放置节点的角度 我是按45度分部的,所以上面的角度先预留出来。这
cocos2dx 实现gallery (二) 我们先把前面的模型简化,我们最后要看到的是这样: 这个图上,构成这个效果的主要因素有3个。 一、x方向的位置,就是图上绿点标记的地方,锚点0.5。(这里我不需要Y方向的变化,需要的也可以自己类推) 二、大小,有了大小的差别,就有了远近的差别 三、zorder,这个是决定遮挡关系,然后我们就会产生一种立体的错
cocos2dx 实现gallery (一) 需要实现一个gallery 。 首先,最容易想到的,自然是让美工,摆个位置,大小,然后程序记录下来,每次移动的时候,后面一个节点移动到前一个节点的位置,然后再设置成前一个节点的scale和zOrder。 这么做,可以解决一些问题。比如这个。这样的gallery,只能一次动一格,因为他是直接把节点设置到前一个节点的位置去。如果你想要图随手走,就比较蛋疼了
UI编辑器获取child的简化 先大喊一声:LUA大法好! 我用cocosStudio,编辑器编辑好的界面导入之后,有一个很痛苦的事情,就是给每个要操作的child初始化。能用的函数有2个:getChildByName和seekWidget。 但是总有那种特别BT的界面,有几十个要初始化的child,不说几十个,就是十几个,写下来也很蛋疼。在我怒写了几个界面之后,我突然想到,为
cocos2dx ui编辑器生成界面的管理 说这个问题之前,先说不用各种UI编辑器的时候,开发一个界面的样子。 比如我们要做这样一个界面(图片素材来自百度图片,侵权不怪我。。。) 我们应该肿么处理这个界面,为了代码好看,可以复用等原因,显然是应该分层分组件,就像这样。 然后我们开始编辑代码,分3个layer,每个layer里面加各种按钮,写上各种触发函数。然后其他地方要用,只需要
由scrollView的缩放,发现的关于2种触摸模式的问题 在scrollView的缩放功能这个文章中,还有一个疑问没有解决,为什么明明用的是单点模式,却还是可以做双指缩放的效果。 引擎里面提供 kccTouchModeOneByOne 和 kccTouchModeAllAtOnce 2种触摸模式,名字很直观,第一种是一个点一个点的处理,那么就是单点模式,第二种是所有点一起来,那么就是多点模式。 但是其实之前有一
CCScrollView 的隐藏属性 —— 缩放 遇到一个很神奇的事情,之前的项目里面,有一个主地图的缩放功能,类似COC背景地图,可以拖动,可以双指缩放。 一般说来,我们会想到写个layer通过多点触控自己实现,因为现有的引擎提供的组件没有能实现这个功能的(或者说我以前不知道。。。),但是我看这个项目代码的时候发现,整个工程里面,所有的touchmode全是kccOneByOne,也就是说全是单点模式,但是他确实用的是scro
关于cocos2dx CCCallfunc对象的传参 (2.x) 之前就觉得这个回调对象很麻烦,需要在create的时候,就把参数设置进去,然后execute的时候,只是直接用开始设定的参数调用这个函数。要更改,只能获取这个对象,然后用setObject来做,设置完了再execute。 而现在做lua,发现有这么一种神奇的做法:function MessageCenter:send(message , ...) if self.ha
3.4 lua 使用 spine 的一些问题 一、基本使用: self.skeletonNode = sp.SkeletonAnimation:create("sptest/spineboy.json", "sptest/spineboy.atlas", 0.3) self.skeletonNode:setAnimation(0, "walk", true) self.skeletonNode:setMix(