自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 lua 继承实现

--首先第一步需要是克隆,是为了能够实现子类拥有父类的所有函数和成员变量function clone(object)    local lookup_table = {}    local function _copy(object)        if type(object) ~= "table" then   --只有是table 那么我们才进行一个递归拷贝            retur...

2018-03-20 21:05:49 424

原创 SDK armature 和 animation spine

1 首先第一个 armature 和 SpineAnimation 对应的是cocos 提供的两套动画,分别对应atlas文件,还有plist文件。一套是cocos编辑器自带的,一套是骨骼动画编辑器制作。 当然现在捕鱼游戏当中还有鱼的动画,这个是直接用动画帧实现的,以后可能还有K帧的使用。 而 cocos提供的帧动画还是和原来一样,通过图片一张张放入frame当中,然后进行播放。2 第三方相当于其...

2018-03-15 22:18:28 342

原创 vs shfit+ctrl+f 全局搜索失

其原因是其他软件占用了该快捷键。例如搜狗拼音,繁体切换就是这个快捷,将其取消vs 全局搜搜变正常工作

2017-05-08 10:43:51 3597 1

原创 cocos clone 的坑

Widget* child = dynamic_cast(subWidget);        if (child)        {            addChild(child->clone());        }由于Sprite并不是Widget的子类,如果子控件是Sprite的话就不会克隆了!!! 包括node 节点,也不能成功的clone,反正不是wi

2017-03-06 20:19:46 4293 2

转载 lua c++ 相互调用

转自:http://cn.cocos2d-x.org/tutorial/show?id=1474一、Lua堆栈要理解Lua和C++交互,首先要理解Lua堆栈。简单来说,Lua和C/C++语言通信的主要方法是一个无处不在的虚拟栈。栈的特点是先进后出。在Lua中,Lua堆栈就是一个struct,堆栈索引的方式可是是正数也可以是负数,区别是:正数索引1永远表示栈底,负数索

2017-01-04 11:15:39 901

原创 cocos场景切换时的loading界面实现

使用cc.Director:getInstance():setNotificationNode(NotificationNode)来进行实现,并且编写一个简单的延时函数。 global.NotificationNode = cc.Node:create() global.LoadingPic = cc.Sprite:create("ui/common/LoadingPic.png")

2016-12-05 13:45:41 3770

转载 LuaJavaBridge 使用说明

原文地址:http://dualface.github.io/blog/2013/01/01/call-java-from-lua/#lua20function20E79A84E5BC95E794A8E8AEA1E695B0E599A8 LuaJavaBridge - Lua 与 Java 互操作的简单解决方案 Table of Contents luaj 主要特征 luaj 用法示例 l

2016-12-01 10:07:58 1160

原创 安卓苹果技术常识

安卓和苹果在后台杀死游戏程序的时候并不会执行当前游戏的类的onExit 函数。具体原因不清楚。

2016-11-09 14:37:37 254

原创 写代码必看!!!!

1 . 写逻辑代码写完后一定要对着自己的逻辑全部走通一遍。不要写完立即开始运行调试。这样的调试会浪费大量的时间。因为有些错误仅仅是因为你代码写错,笔误,或者逻辑的一个漏洞而导致。而这些问题都是非常简单的。所以我们在写完逻辑的时候一定要对着代码理一遍思路,看看有没有一些弱智错误,再三确认无误再去运行调试。更改代码逻辑的时候,记住一定要去增加代码,而不要去删除或者更改代码。增加代码是最好的方式。在更

2016-09-28 17:32:07 3093

原创 Lua 调用C++ 出现的问题

因为算法测试做了一答应微秒的代码。但是在lua调用C++的时候出现了一些问题:下面是代码:luatil.h#pragma onceclass lautil { //返回当前的微秒; static long long getCurMicroTime();};lautil.cpp#include "lautil.h"#include "cocos2d.h"#include <w

2016-09-26 15:22:32 619

原创 返回局部指针

以前经常在C++/c 中听到,不能去返回局部指针。 导致现在ios,和cocos的开发都有一定的阴影。 当时对这句话的含义没有理解完全。所谓不能返回的局部指针。这个指针指向的一定是基础数据类型,在准确点指向的数据是存放在堆栈上面的。一般情况下基础数据类型都是放在堆栈上面。函数执行完毕后当前函数的堆栈都是要被清空的。所以这个时候你返回的局部指针指向的内存就已经被释放了!但是有时候我们还是可以返回局部指

2016-09-01 12:37:41 398

原创 cocos lua 实现原声语音 流程概述

由于游戏需要,在cocos里面集成了自己原声的语音系统。虽然做的过程踩了很多的坑,并且过程很痛苦。这个过程需要你去了解很多的东西。 我是直接使用的lua 调用C++,c++在通过jni 调用安卓java来实现的语音录制并且播放。总体就是微信的聊天方式,语音内容都可以保存并且重复播放。下面我们就来梳理一下大概的流程。系统流程描述: lua通过C++调用java的recordVoice接口,java

2016-08-26 17:15:04 4487

原创 cocos lua 实现热更新

第一次搞热更新,这里记录一下全过程,方面以后查看。原理:每次登陆游戏利用cocos的assetManager从服务器拉去当前最新的两个文件。 一个是version.mainifest,一个project.mainifest. 这两个文件都是xml的描述文件。一个包含了版本信息,第二个包含了游戏所有资源的MD5码。首先通过version文件对比本地的版本是否相同,如果不相同,再通过跟本地的proje

2016-08-22 10:51:15 6616 9

原创 补码 源码 10000000 是-128

现在我们知道了计算机可以有三种编码方式表示一个数. 对于正数因为三种编码方式的结果都相同:[+1] = [00000001]原 = [00000001]反 = [00000001]补所以不需要过多解释. 但是对于负数:[-1] = [10000001]原 = [11111110]反 = [11111111]补可见原码, 反码和补码是完全不同的. 既然原码才是被人脑直接识别并用于计算表示方式, 为何还

2016-08-14 13:15:41 5477

转载 lua中的4 种常用遍历

当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtest) do XXX end for key, value in ipairs(tbtest) do XXX end for i=1, #(tbtest) do XXX

2016-06-13 17:41:57 4701

原创 cocos3.10游戏移植到安卓平台教程(c++版本)

流程简介 现在Cocos3.10移植游戏到安卓平台还是比较简化了,你只需要下载好SDK,JDK,NDK,ANT,配置好坏境变量,安装好JDK。再更改一下android.MK文件,你就直接可以进行编译了,当然编译当中也许会因为C++平台原因,NDK用的G++编译器,和VS的不一样,所以会出比较多的错误,只要你有耐心,就可以最终编译成功。配置环境 首先到网上下载SDK,JDK,NDK,ANT,如

2016-05-18 18:14:26 5187

原创 cocos converToWordSpace

每次遇到cocos的坐标转换,总是反应不过来,今天就顺便总结一下,只要这样记住就行了。比如一个精灵Sprite,不管这个Sprite他的父节点是谁。你都不用去关心。 好,现在我们把Sprite转换为世界坐标: 1.我们可以通过Sprite自行转换auto size=Sprite->getContentSize(); auto wordPos=Sprite->convertToWordS

2016-05-16 10:26:39 684

原创 移植游戏后,UI点击位置不正确。

今天把做的游戏移植到了安卓上面,但是每次点击按钮都没有用,必须要往上面点击以下才行。 后来才知道使这里的问题: 我把图中写的代码:APPdelegate 文件中的 glview->setFrameSize(960,640)写在在了其他的位置 我们要达到的目的是在PC端,MAC,LINUX使用960,640的大小,所有应该卸载if判断条件语句当中。如果写在外面相当于把安卓手机屏幕定死了。安卓

2016-05-11 17:39:07 356

原创 std::move和std::forwarding完美转发。

之所以要使用std::move还是为了提高程序的效率,我们经常创建一个对象,然后调用一个函数返回了一个临时对象,比如 object=getObject(); 这个时候就会调用boject的拷贝赋值函数,那么会对object对象重新申请空间,赋值,并且析构其中的一些内容。然后再把临时对象的里面的数据赋值给object。 那么还有一种更好的方法,交换object和临时对象的资源指针,也就是窃

2016-05-09 17:06:08 384

原创 时间戳在游戏当中的运用

今天看lua写的一个坦克游戏,感觉时间戳用的很好。他把键盘输入都用时间戳记载了下来。然后根据最后一个按下的键,来判断当前用户选择的方向。也就是当左右键同时按下的时候,当然肯定不可能同时,并且肯定有一个键是后按下的。那么如果后按下的是右键,那么坦克往右行走,如果右键弹起,这个时候根据时间戳,坦克会往左移动。 这样的设计很好,游戏的体验性非常棒!

2016-05-02 11:15:36 1146

原创 cocostudio的TextField空件实现光标。

cocostudio3.10 已经帮我们做好了TextField控件,提供了触摸事件和一些常用API,已经不用向原来自己写一个TextFied了,但是还没有实现光标,下面我们在这个控件的基础上面来加入光标的功能。CursorTextField .h#ifndef CursorTextField_h#define CursorTextField_h#include"cocos2d.h"#inc

2016-04-09 11:33:52 3937 1

原创 由Namespace冲突导致报错 类不明确。

C++中引入头文件难免会有相同的类名导致冲突,所以提供了NameSpace来进行更多的减少类名冲突的问题。但是类名的冲突总是不能被完全解决的。比如大家再引入了两个nameSpace的情况下,其中两个Namespace都有相同的类://nameSpace 测试 namespace A{ class T {}; namespace B { class T

2016-04-09 11:14:19 3154 1

转载 enum class type 和enum type 的区别

枚举是用户定义的类型,其中包含一组称为枚举器的命名的整型常数。 说明 说明 本文包含 ISO 标准 C++ 语言 enum 类型和 C++11 中引入的范围(或强类型)enum class 类型。 有关 C++/CLI 和 C++/CX 中 public enum class 或 private enum class 类型的详细信息,请参阅 枚举类。 // unscoped enum: en

2016-04-07 11:13:23 3095

原创 cocos2d: fullPathForFilename: No file found at resource/Player.png. Possible missing file.

相信大家再用cocostudio发布好csb文件的时候。在cocos中读取总是不能读取到资源文件。但是日志显示csb文件已经读取成功,就是找不到csb附属的资源文件。然后报错: cocos2d: fullPathForFilename: No file found at resource/Player.png. Possible missing file. 等等。 解决这个问题很简单,你虽然给

2016-04-04 20:21:37 8217

原创 function&bind原理总结。

首先要搞懂两个东西的原理你必须要要知道委托,对C++模板有深入的了解。委托:委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。 如果要详细了解委托 ,请看下面链接: http://baike.baidu.com/link?url=Ja8bMBM

2016-04-04 20:09:48 2308

原创 类 Menu定义不明确。

今天为了测试写了一个很小的代码,写了一个类,名字叫做Menu。 代码如下#ifndef Menu#define Menu#include"cocos2d.h"using namespace cocos2d;class Menu : public Layer{public : static Scene*createScene(); bool init(); CRE

2016-03-31 13:31:53 745

原创 cocos2d 释放资源 总结

cocos2d的自动回收机制用起来还是挺好用的,但是有的时候我们还是要写单一的函数来实现场景的释放,经过retain后的类的释放,std::vector的释放。如果只是单一的一个场景类或者Layer类,在使用完毕后可以直接调用removefromParent()进行释放,这时候场景类相当于被addchidren()的“父亲”遗弃的婴儿,在cocos2d的自动回收机制中调用自己的析构函数进行释放,首

2016-03-19 12:24:26 1976

原创 理解Scale9Sprite

相信刚开始使用一段时间cocos的小伙伴对sprite自然不陌生,大家创建图片都会自然的使用到sprite。那么大家也会偶尔看到Scale9Sprite,俗称9妹图片,也是一种精灵,相当于一种更好的精灵吧。 这种精灵你可以自由的设置大小,那么它就会自动的进行拉伸,拉伸有什么好处? 可以最大效率的避免图片失真,节约资源,减少系统空间。那么我们平时使用的sprite也是可以自动设置大小的,但是这种设置大

2016-03-15 12:36:17 1091

原创 callBackName cannot be found&fullPathForFilename: No file found at replay.png. 解决方案

相信在大家再用cocostudio制作出来的csb文件时候都会偶尔都会出现这样的报错,要不是就是游戏中的显示的控件不全。有的图片没有显示,有的按钮回调函数并没有进行回调。下面来给大家一些解决方案。callBackName cannot be found 我也只遇到过一次回调函数写出来,点击按钮的时候并没有调用回调函数。原因是因为你自己的csb中也许按钮和其他的图片或者控件的逻辑标签重复了,自己

2016-02-04 11:11:50 2292

原创 iterator not incrementable 解决方案

今天写了这样的一段代码:for (auto it = m_vecBall.begin(); it != m_vecBall.end();) { auto x = (*it)->m_ball->getPositionX(); if (x > VISIBLESIZE.width || x < 0) { m_vecBall.e

2016-02-02 18:06:07 4428

原创 Layer::init() 到底做了什么

从一开始写cocos的代码就开始想着这个问题,由于这个问题并没有给我的编程带来任何的bug,所以一直没有解决。(其实原因是不会找源代码····)今天就来看看Layer::init()到底做了什么事情。首先我们来看看到底怎么找Layer.cpp文件,每次按F12都只能看到Layer.h文件,蛋疼! 打开你的项目: 对!就是这个文件夹 点进去,然后找到2d/Layer.cpp下面大家就可以找到Lay

2016-01-23 16:29:56 1760

原创 cocos Vector特点详解

首先看下面两段代码:ScoreBoard::ScoreBoard(Sprite* one, Sprite* two, Sprite* three, Sprite* four, Sprite* five){ mOnes = one; mTwos = two; mThrees = three; mFours = four; mFives = five;

2016-01-23 15:31:45 697

原创 使用CSLoader获取Node后再获取精灵失败

今天在写代码的时候遇到一个很郁闷的问题,用cocostudio做了一个界面,然后将其加载到程序当中,也成功获取了node节点下的几个精灵,但唯独有一个精灵获取后使用失败,程序中断,下面代码:auto node = CSLoader::createNode("cocostudio/Scene.csb"); mOnes = static_cast<Sprite*>(node->getChildB

2016-01-23 12:03:29 2432

原创 Cocos物理引擎刚体的3种掩码

在一些物理世界游戏的设计中,肯定会涉及到一些刚体的接触,那么这些刚体的接触我们是可以决定到底碰撞与否,接触的时候是否调用回调函数来进行一些处理,那么下面我们就来介绍一下刚体的3种掩码值。首先看下面3个函数triangle->getPhysicsBody()->setCategoryBitmask(0x08); // 1000 这个函数是设置刚体的种类掩码值,掩码值最多可以用32位的2进制表

2016-01-22 12:59:51 1791

原创 cocos 刚体穿透解决方案。

刚体穿透:打个比方,比如一个圆球在一个正方形的方框里面不同的弹射。当圆球达到一定的速度时候,会出现一个bug,圆球会直接弹出方框,还没有进行正确的碰撞检测。 这种情况叫做刚体穿透。之所以出现这种情况是因为圆球速度过快,方框的厚度不够,那么在刹那的短时间内系统没有对其进行碰撞检测,而当球刚好已经穿过方框后才进行碰撞检测就不行了。cocos3.7版本提出了他的解决方案,比如在一帧做一次碰撞检测,那么我们

2016-01-20 19:37:38 7094 2

原创 cocos3.7物理引擎基本使用

我们将完成一个简单的实例来介绍cocos物理的引擎的基本使用: 我们要实现的是一个小球不停的在屏幕中进行弹跳,没有重力,完全弹力。首先创建一个场景,该场景不能使普通的场景,必须要先创建物理场景才能在该场景中加入物理的元素,比如刚体(就是我们的小球),重力,摩擦力,弹力。Scene*GameScene::createScene(){ //创建一个物理场景。 mScene =

2016-01-18 16:46:03 1263 1

原创 cocos2d3.x创建项目

每次创建项目的时候都记不住创建命令,所以这次在这里记录一下,不管你是什么版本的cocos,请进入如下路径然后shift+鼠标右键调用命令行来创建项目,路径:D:\cococs2d32\cocos2d-x-3.2\cocos2d-x-3.2\tools\cocos2d-console\bin就是bin目录下打开命令行来创建项目: cocos new mygame -p com.www.com -l

2016-01-08 20:15:21 359

原创 Cocos输出中文字符

Cocos在直接输出中文的情况下会出现乱码的情况,下面给大家介绍一种很简单的方式来正确输出中文,使用iconv库。本版本的cocos是3.2。直接在你的项目中创建如下一个类:#ifndef _TOOLS_#define _TOOLS_#include "cocos2d.h"using namespace cocos2d;class Tools{public: static int

2016-01-08 11:58:51 631

原创 Tiledmap基本使用教程

如果你是第一次使用tiledmap的朋友,那么这篇文章一定能给你带来一些帮助。相信大家都玩过飞行射击类游戏,游戏中不断有敌方飞机biubiu的飞向玩家,那么这些飞机不是随机出现,是可以用tiledmap在地图上面标记出来,然后加上代码,让他们在一定的时间出现。 下面给大家带来tiledmap基本使用的详细过程,我们在tiledmap中画一个方框,并且在cocos中得到这个方框的位置。翔仔coco

2016-01-07 21:28:11 18819 1

原创 schedule_selector详解

大家在使用update的时候有时候基本会这样传参:schedule(schedule_selector(PlaneLayer::Myupdate),0.1f,kRepeatForever,0);那么其中的schedule_selecto是什么意思?回到cocos源代码,如下:typedef void (Ref::*SEL_CallFunc)();typedef void (Ref::*SEL_Ca

2016-01-05 18:32:03 2293

空空如也

空空如也

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

TA关注的人

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