Cocos2dx
文章平均质量分 84
ouyangshima
找到心中的那份自信
技术不牢,地动山摇
展开
-
[CocosCreator]AssetManager之管线
creator 使用管线(pipeline)来处理整个资源加载的流程,这样的好处是解耦了资源处理的流程,将每一个步骤独立成一个单独的管道,管道可以很方便地进行复用和组合,并且方便了我们自定义整个加载流程,我们可以创建一些自己的管道,加入到管线中,比如资源加密。管线管线 可以理解为一系列过程的串联组合,当一个请求经过管线时,会被管线的各个阶段依次进行处理,最后输出处理后的结果。如下图所示:管线与一般的固定流程相比,优势在于管线中的所有环节都是可拼接和组合的,这意味着开发者可以在现有管线的任原创 2021-09-10 11:15:05 · 2568 阅读 · 1 评论 -
[Cocos2dx]DrawCall是什么?
对话框和控件对话框是Windows应用程序中一种常用的资源,其主要功能是输出信息和接收用户的输入数据。控件是嵌入在对话框中或其它父窗口中的一个特殊的小窗口,它用于完成不同的输入、输出功能。对话框与控件关系密切,在每个对话框上一般都有一些控件,对话框依靠这些控件与用户进行信息的交互。在MFC中,对话框的功能被封装在CDialog类中,而CDialog类是CWnd类的派生类。作为窗口,原创 2013-04-22 19:18:05 · 4110 阅读 · 0 评论 -
[cocos2dx_Lua]3.10版本使用cjson
Lua CJSON是Lua语言提供高性能的JSON解析器和编码器,其性能比纯Lua库要高10到20倍。cocos2dx lua 3.10 默认目录中包含cjson文件(目录:/frameworks/cocos2d-x/external/lua),但是没有使用。而是用的json.lua进行解析json。效率低下,json字符串稍微大点,进行decode的时候就非常卡。1.首先将cjson加入到工程2...原创 2018-04-08 10:21:52 · 1125 阅读 · 0 评论 -
[cocos2dx_Lua]打印用户数据
local m = {}function m:printTT(content, ...) local tab = 0 local out_list = {} local function printk(value, key, tab) if key == nil then return end i...原创 2017-11-22 21:17:54 · 1314 阅读 · 0 评论 -
[cocos2dx]基础知识
Cocos2d-x 内存管理机制 Cocos2d-x 中所有内存管理方式的基础是引用计数,动态分配一个 Ref 对象后其引用计数为 1,并通过 retain 和 release 来增持和减少其引用计数。引用计数本身并不能帮助我们进行内存管理。 为了正确地释放对象的内存, Cocos2d-x 使用 Objective--C 里面的自动回收池的机制来管理对象内存的释放。Autorelease 有点类似原创 2012-12-14 18:52:45 · 997 阅读 · 0 评论 -
[Cocos2dx]优化Cocos2d-x游戏性能
这篇文章从理论的角度和大家一起来探讨一下如何优化Cocos2d-x游戏的性能方针查找游戏性能瓶颈,然后优化瓶颈当我们在做任何性能优化之前,请牢记这条。造成你的系统性能瓶颈的代码通常只有那 20%的代码,切莫胡乱优化。总是使用工具来查找性能瓶颈,而不是靠猜。查找GPU性能瓶颈的工具使用 Xcode OpenGL ES Profiler。这里是苹果官方的参考文档:如果你想 profiling 特定原创 2017-10-13 09:21:17 · 5666 阅读 · 0 评论 -
[cocos2dx_Lua]自定义本地化数据
GameStateDB.lua--本地存储的加密文件local m = class( "GameStateDB" )m.ERROR_INVALID_FILE_CONTENTS = -1m.ERROR_HASH_MISS_MATCH = -2m.ERROR_STATE_FILE_NOT_FOUND = -3local crypto = require(cc.PACKAGE原创 2017-09-09 18:06:30 · 1493 阅读 · 0 评论 -
[cocos2dx]三种缓存类介绍
在介绍三个缓存时,我们要先理清一个问题:什么是纹理?通俗的解释呢,纹理就是图片的意思啦。当一张图片被加载到内存后,它是以纹理的形式存在的。从这里可以看出,纹理其实就是一块内存!这块内存中存放的是按照指定的像素格式填充的图片像素信息。TextureCacheTextureCache纹理缓存是最底层也是最有效的纹理缓存。它到底有什么用呢?我先描述一个现象吧:假设游戏中有个界面用到的图片非常多,,第一次原创 2017-10-12 09:22:50 · 1466 阅读 · 0 评论 -
[cocos2dx_Lua]quick中的节点帧事件
注册该事件后,每一次刷新屏幕前(也就是前一帧和下一帧之间)都会触发事件。-- 注册事件self._listener = self:addNodeEventListener(cc.NODE_ENTER_FRAME_EVENT, function(dt) print("-----dt--",dt) end)-- 启用帧事件self:scheduleUpdate()原创 2017-09-22 10:42:43 · 1639 阅读 · 0 评论 -
[cocos2dx_Lua]quick中的触摸事件
cocos2d-x原本的触摸机制存在一些限制,在使用中需要开发者做不少额外的处理。所以 quick-cocos2d-x 提出了自己的一套触摸机制。显示层级在cocos2d-x里,整个游戏的画面是由一系列的 Scene, Node, Sprite, Layer 等对象构成的。而所有这些对象都是从 Node 这个类继承而来。我们可以将 Node 称为显示节点。一个游戏画面就是许多显示节点构成的一棵树:原创 2017-09-28 12:34:56 · 1753 阅读 · 0 评论 -
[cocos2dx]可视元素——CCTexture2D纹理类
CCTexture2D: 纹理,即图片加载入内存后供CPU和GPU操作的贴图对象。CCTexture2D,SpriteFrame,Sprite关系CCTexture2D是保存在GPU缓冲中的一张纹理。是由一张图片创建获得的。SpriteFrame是Texture+Rect,根据一张纹理材质来剪切获得。SpriteFrame *spFrame = SpriteFrame::createWithTex原创 2017-08-30 20:06:58 · 2491 阅读 · 0 评论 -
[cocos2dx_Lua]quick中的节点事件
节点事件在一个 Node 对象进入、退出场景时触发。local node = display.newNode()node:addNodeEventListener(cc.NODE_EVENT, function(event) print(event.name)end)scene:addChild(node)event属性event.name: 指示节点事件类型,具有下列值:enter原创 2017-09-20 12:05:42 · 986 阅读 · 0 评论 -
[cocos2dx_Lua]在发布时加密lua源文件
加密shell脚本#!/bin/bashCURRENT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"CMP_PATH=$CURRENT_PATH/quick/binSRC_PATH=$CURRENT_PATH/../srcOUT_PATH=$CURRENT_PATH/../res/scMYSIG="BJGAME"MYK原创 2017-09-15 10:36:59 · 955 阅读 · 0 评论 -
[cocos2dx]Mac操作系统下的cocos2dx-lua环境配置
Xcode运行程序1.下载安装cocos2d-x-3.6从官网下载cocos2d-x-3.6.zip,解压后是,命令行进入到此目录中,安装运行setup.py,运行干了什么,如图:最后的结果是,vim ~/.bash_profile#cocos start # Add environment variable COCOS_CONSOLE_ROOT for cocos2d-x#export CO...原创 2015-07-10 20:50:53 · 6126 阅读 · 1 评论 -
[cocos2dx_Lua]动画加速与减速
动画是游戏的必然要素之一,在整个游戏过程中,又有着加速、减速动画的需求。以塔防为例子,布塔的时候希望能够将游戏减速,布好塔后,则希望能将游戏加速;当某个怪被冰冻后,移动速度减缓,而其他怪的移动速度不变。实现全局的加速、减速通过设置Scheduler的timeScale,可以实现全局的加、减速。游戏的速度可以由导演来控制。local multi = 0.2cc.Director:getInstan...原创 2018-03-14 16:26:35 · 1821 阅读 · 0 评论 -
[cocos2dx]屏幕适配
由于各种智能手机的屏幕大小都不一致,会出现同一张图片资源在不同的设备分辨率下显示不一样的问题。为避免这样的情况,需要Cocos引擎能提供多分辨率的支持,也就是说要求实现这样的效果 —开发者不需要考虑程序实际运行在什么分辨率下而只需要制定设置好设计分辨率就行,接着引擎便会自动实现设计分辨率(DesignSize)到屏幕分辨率(FrameSize)的转化,以及不同资源分辨率到设计分辨率的转化。1...原创 2019-06-16 19:45:52 · 771 阅读 · 0 评论 -
[cocos2dx]Delegate委托设计模式
实现委托机制demo的情景描述:LayerA是一个层,里面有个sprite,一旦A被初始化,这个sprite就会执行一个action;LayerB是另一个层。我在LayerB中加入了LayerA,但是要等到A中的那个sprite的action执行完毕后,B再立刻执行另外一个方法。问题来了,我怎么在LayerB中知道LayerA中的sprite的action执行完了,那么解决的方法就是使用委托机...原创 2019-03-04 16:18:40 · 495 阅读 · 1 评论 -
[cocos2dx]点击android back虚拟键,关闭当前界面
BaseKeyEvent头文件//需要响应返回按钮的,继承这个类,重写 OnBaseKey//EventKeyboard::KeyCode::KEY_BACKclass BaseKeyListener{public: BaseKeyListener(void); ~BaseKeyListener(void); virtual bool OnBaseKe...原创 2019-02-22 12:50:21 · 754 阅读 · 0 评论 -
[cocos2dx]tableview的使用
TableView,ListView都继承自ScrollViewListView中的每个单元称为item,TableView的每个单元称为cell,如果分别创建20个单元,但每次只能显示5个单元。当ListView创建的时候,会直接创建20个item;而TableView只会创建5个cell,然后在队列中反复利用。1.首先要知道头文件 和 命名空间#include "cocos2d.h"...原创 2019-02-22 11:20:34 · 2810 阅读 · 0 评论 -
[cocos2dx]从a点移动到b点
convertToWorldSpace用于将一个相对坐标转化为绝对坐标,convertToNodeSpace则是将一个绝对坐标转化为一个相对坐标。这里的相对坐标指的是相对于某一个CCNode的坐标(CCNode左下角为0,向右向上为正),这里的绝对坐标是相对于屏幕的坐标(屏幕左下角为0,向右向上为正)。源码// 把世界坐标转换到当前节点的本地坐标系中Vec2 Node::conver...原创 2018-11-28 18:05:30 · 1714 阅读 · 0 评论 -
[Cocos2dx]cocos luacompile命令加密lua文件
用法介绍命令cocos luacompile --h查看用法usage: cocos luacompile [-h] [-v] [-s SRC_DIR_ARR] [-d DST_DIR] [-e] [-k ENCRYPTKEY] [-b ENCRYPTSIGN] [--disable-compile]对 lua 文件进行加密和编译为字节...原创 2018-10-19 10:56:37 · 5129 阅读 · 0 评论 -
[cocos2dx]坐标转换
在Cocos2d-x中提供了以下的API用来进行坐标转换。/*** 将世界坐标转换成节点坐标,忽略锚点的影响;结果是以点为单位。*/Vec2 convertToNodeSpace(const Vec2& worldPoint) const;/*** 将节点坐标转换成世界坐标,忽略锚点的影响;结果是以点为单位。*/Vec2 convertToWorldSpace(con...原创 2018-10-09 16:47:27 · 1828 阅读 · 0 评论 -
[Cocos2dx]C++自定义类绑定到Lua
Cocos2dx通过工程里面的tools/toLua工具生成注册C++函数到lua的函数cpp文件bindings-generator脚本的工作机制不用编写.pkg和.h文件了,直接定义一个ini文件,注册到Lua环境里的模块名是什么,就行了。 摸清了toLua++工具的生成方法,改由Python脚本动态分析C++类,自动生成桥接的.h和.cpp代码,不调用tolua++命令了 ...原创 2018-10-15 18:06:33 · 1245 阅读 · 0 评论 -
[Cocos2dx]ListView添加Item,滑动时不触发点击事件
//获取控件vector<string> vecNodeName = {"PanelClassListItem","lvClass"};for (int i=0; i < vecNodeName.size(); i++) { auto node = Helper::seekWidgetByName(static_cast<Widget*>(mUI),...原创 2018-08-10 20:34:33 · 2877 阅读 · 0 评论 -
[Cocos2dx]颜色混合BlendFunc
概念“混合”是指两种颜色的叠加方式。在新图片将要渲染画到屏幕上的时候,将用在新图片中的红、绿、蓝和透明度信息,与屏幕上已经存在的图片颜色信息相融合。说的具体一点,就是把某一像素位置上原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。假设我们需要绘制这样一个场景:透过红色的玻璃去看绿色的物体,那么可以先绘制绿色的物体,再绘制红色玻璃。在绘制红色玻璃的时候,利用“混合”功能,把将...原创 2018-05-02 13:50:36 · 2230 阅读 · 0 评论 -
[cocos2dx]RenderTexture画布类
3.x的渲染机制改动比较大,改变了之前在每帧遍历所有的Node树节点时通过draw()方法中的直接渲染,而是通过生成渲染指令并将渲染指令发送到渲染队列,在每一帧结束时进行延迟渲染,这样就把游戏循环和渲染分离开来。Cocos2d-x提供了一个RenderTexture类来支持把帧缓冲中的数据渲染到一块纹理之上,通过它可以来实现游戏截图,获取纹理上的像素信息等效果,在3.x的RenderTexutru原创 2017-09-14 10:11:41 · 4121 阅读 · 0 评论 -
[cocos2dx_lua]Lua版自定义事件分发系统
--事件系统----------------------------------local EventSystem = class("EventSystem")function EventSystem:ctor() self._eventBus = {}end-- _eventBus[eventName][tag] = listenerfunction EventSystem原创 2017-08-26 10:49:30 · 1148 阅读 · 0 评论 -
[cocos2dx]抽象元素——CCCamera摄像机类
概述所有节点都拥有一个摄像机类CCCamera。只有通过摄像机类,节点才会被渲染出来。当节点发生缩放旋转和位置变化的时候,都需要覆盖CCCamera类,让这个节点通过CCCamera类重新渲染。注意:CCNode类里有些方法可以实现缩放、旋转和位置变化,当使用摄像机类实现这些的时候,那些方法就不能同时使用了。使用摄像机类也不可以同时使用世界坐标了。 Cocos2D-X中的原创 2015-07-24 20:35:12 · 1746 阅读 · 0 评论 -
[cocos2dx]cocos2dx主要概念
Cocos2dx 中的主要概念包括:应用、导演、场景、图层、精灵、动画、动作。层次关系如下:CCDirector(导演)在cocos2d-x引擎中,CCDirector类是整个游戏的组织和控制核心,游戏的运行规则,游戏内的CCScene(场景)、布景(CCLayer)、角色(CCSprite)等的运动,均由CCDirector管理,其在游戏中起着指定游戏规则让游原创 2015-04-24 16:39:50 · 1202 阅读 · 0 评论 -
[cocos2dx]cocos2dx介绍
引擎简介Cocos2d-x 的原型是 Cocos2d,一个最早来源于几位 Python 开发者在 PyWeek 竞赛中的作品,目的是封装底层绘图代码,简 化2D 游戏的开发过程,避免每次都"重新发明轮子"。有了Cocos2d,开发者就可以把全部精力集中在游戏开发上,而不必关心绘图的细节。这个 Python 版本的引擎最早发布于2008 年 4 月,并一直保持版本的更新。在 Cocos2d原创 2015-04-23 22:01:20 · 2400 阅读 · 0 评论 -
[cocos2d_lua]cocos2d_lua中class语法
在lua中,可以通过元表来实现类、对象、继承等。与元表相关的方法有setmetatable()、__index、getmetatable()、__newindex。关键:实现Lua面向对象可以分解为类的定义和类的实例化两个问题。类的定义主要是实现继承,即怎么让子类拥有父类的方法集。类的实例化需要解决实例如何共享类的方法集,但独享自己的成员变量实例。方案:子类在定义时复制所有基类的方法,在实例化...原创 2015-05-12 00:26:54 · 4886 阅读 · 0 评论 -
[cocos2dx]抽象元素——CCDirector导演类
在cocos2d-x引擎中,CCDirector类是整个游戏的组织和控制核心,游戏的运行规则,游戏内的CCScene(场景)、布景(CCLayer)、角色(CCSprite)等的运动,均由CCDirector管理,其在游戏中起着指定游戏规则让游戏内的场景、布景和任务有序的运行。在整个游戏里面,一般只有一个导演,游戏开始和结束时,都需要调用CCDirector的方法完成游戏初始化或销毁工作.在Coc原创 2015-07-21 18:47:21 · 907 阅读 · 0 评论 -
[cocos2dx]重要父类——CCObject对象类
CCObjectCCObject.h:#ifndef __CCOBJECT_H__#define __CCOBJECT_H__#include "platform/CCPlatformMacros.h"//Cocos2d命名空间NS_CC_BEGIN//声明以下几种类,在后面会定义相应类的成员变量的指针。以下几个类均是CCObject类的派生类。class CCZone原创 2015-04-26 12:43:24 · 2748 阅读 · 0 评论 -
[cocos2dx]抽象元素——CCScene场景类
在游戏里,场景就是关卡。关卡由人物角色和背景构成。在电影里,场景就是电影中的各种场面,各种场面主要由人物活动和背景等构成。而在Cocos2d-x 引擎中,场景存放的是需要渲染的图层,任务角色和菜单,它可以作为一个整体,一起渲染,一起销毁,一起被场景切换使用。即游戏关卡的实施者,其管理这多个CCLayer,进行场景展现,相关业务逻辑的处理等; 一个场景就是一个界面,定义了所显示的所有角色图层信息原创 2015-07-18 20:35:12 · 861 阅读 · 0 评论 -
[cocos2dx]可视元素——CCLayer图层类
Layer是处理玩家事件响应的Node子类。与场景不同,层通常包含的是直接在屏幕上呈现的内容,并且可以接受用户的输入事件,包括触摸、键盘输入等。我们需要在层中加入Sprite(精灵)、文本标签或者其它游戏元素,并设置游戏元素的属性,比如位置、方向和大小;设置游戏元素的动作等。在我们设计好层以后,只需要把层按照顺序添加到场景中就可以显示出来了。一个场景中有多个可以交互的图层,每层显示不同的角色信息。原创 2015-07-18 20:46:09 · 1055 阅读 · 0 评论 -
[cocos2d_lua]cocos2d_lua中的框架MVC
MVC简介MVC,即Model View Controller。Model(模型),一般负责数据的处理;View(视图),一般负责界面的显示;Controller(控制器),一般负责前端的逻辑处理。拿一款手机游戏来说,界面UI的显示、布局等就是View负责;点击了按钮,手势的滑动等操作由Controller来处理;游戏中需要的数据资源就交给Model。 其中cocos、Controlle...原创 2015-05-13 00:24:26 · 4616 阅读 · 1 评论 -
[cocos2dx]基于Cocos2d-x引擎的游戏框架设计
游戏架构与实现目前,很多基于cocos2d-x的代码基本上仅是对引擎功能的使用,完全不能按照游戏项目的标准来参考。作为游戏项目代码,不仅需要实现游戏的诸多功能,还需要从架构层面,从模块设计的角度来思考和设计,使代码具有更好的复用性和拓展性。对于游戏客户端,按照功能模块的区别可分为:引擎封装层模块、游戏数据管理模块、应用程序配置模块、日志记录模块、网络管理模块、消息事件机制模块、输入输出控制原创 2015-04-27 01:58:34 · 6975 阅读 · 0 评论 -
[cocos2dx]Cocos Code IDE使用教程
环境下载安装java jdk,如果你安装的jdk是32位,那你就下载32位的IDE,如果是64位就下载64位的IDE下载安装Python,最好是2.7.5(32位还是64位根据你系统选择)下载安装vs2012版本及以上下载安装Cocos Code Ide 1.2.0 下载引擎cocos2d-x3.3, cocos2d-x-3.3.zip下载android SDK,adt原创 2015-04-21 14:44:24 · 6337 阅读 · 0 评论 -
[cocos2dx]实例认识分析MVC模式
mvc模式Model(模型):一般负责数据的处理View(视图):一般负责界面的显示Controller(控制器):一般负责前端的逻辑处理实例捉虫游戏,背景介绍:两类虫(蚂蚁和蜘蛛)进洞超过3个,玩家就失败。在实际开发中,我遇到的头疼麻烦的事,不知道M、V、C他们之间的调用是怎样的?M模型BugAnt和BugSpider都继承BugBase.原创 2015-08-11 21:45:40 · 3060 阅读 · 0 评论 -
[cocos2dx-lua]Cocos2dx-Lua中Sprite精灵的3种创建方法
---1.从图片文件创建--适合于要显示的这张图片的全部区域或部分区域function TestTest:CreateSprite1() local png = "lobby/lobby.png" --文件路径 local sprite = cc.Sprite:create(png) self:addChild(sprite) local sprite2 =原创 2015-12-24 19:10:57 · 7463 阅读 · 0 评论