cocos2d-x
僵尸男孩
这个作者很懒,什么都没留下…
展开
-
cocos游戏开始时游戏图片切换实现
我们实现的是游戏开始的时候都会有不同的游戏图片切换来给玩家展示游戏中的场景,先来看看效果图片: 当然我们可以选择很多的图片进行切换,切切切。其实实现比较简单,运用cocos引擎的Update可以轻松地实现,下面少年来给大家详细的讲解下:首先创建一个logoScene类:class LogoScene :public Scene{public: void update(floa原创 2015-12-29 19:12:23 · 1016 阅读 · 0 评论 -
function&bind原理总结。
首先要搞懂两个东西的原理你必须要要知道委托,对C++模板有深入的了解。委托:委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。 如果要详细了解委托 ,请看下面链接: http://baike.baidu.com/link?url=Ja8bMBM原创 2016-04-04 20:09:48 · 2311 阅读 · 0 评论 -
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 · 8270 阅读 · 0 评论 -
理解Scale9Sprite
相信刚开始使用一段时间cocos的小伙伴对sprite自然不陌生,大家创建图片都会自然的使用到sprite。那么大家也会偶尔看到Scale9Sprite,俗称9妹图片,也是一种精灵,相当于一种更好的精灵吧。 这种精灵你可以自由的设置大小,那么它就会自动的进行拉伸,拉伸有什么好处? 可以最大效率的避免图片失真,节约资源,减少系统空间。那么我们平时使用的sprite也是可以自动设置大小的,但是这种设置大原创 2016-03-15 12:36:17 · 1102 阅读 · 0 评论 -
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 · 3950 阅读 · 1 评论 -
移植游戏后,UI点击位置不正确。
今天把做的游戏移植到了安卓上面,但是每次点击按钮都没有用,必须要往上面点击以下才行。 后来才知道使这里的问题: 我把图中写的代码:APPdelegate 文件中的 glview->setFrameSize(960,640)写在在了其他的位置 我们要达到的目的是在PC端,MAC,LINUX使用960,640的大小,所有应该卸载if判断条件语句当中。如果写在外面相当于把安卓手机屏幕定死了。安卓原创 2016-05-11 17:39:07 · 366 阅读 · 0 评论 -
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 · 5256 阅读 · 0 评论 -
cocos converToWordSpace
每次遇到cocos的坐标转换,总是反应不过来,今天就顺便总结一下,只要这样记住就行了。比如一个精灵Sprite,不管这个Sprite他的父节点是谁。你都不用去关心。 好,现在我们把Sprite转换为世界坐标: 1.我们可以通过Sprite自行转换auto size=Sprite->getContentSize(); auto wordPos=Sprite->convertToWordS原创 2016-05-16 10:26:39 · 695 阅读 · 0 评论 -
返回局部指针
以前经常在C++/c 中听到,不能去返回局部指针。 导致现在ios,和cocos的开发都有一定的阴影。 当时对这句话的含义没有理解完全。所谓不能返回的局部指针。这个指针指向的一定是基础数据类型,在准确点指向的数据是存放在堆栈上面的。一般情况下基础数据类型都是放在堆栈上面。函数执行完毕后当前函数的堆栈都是要被清空的。所以这个时候你返回的局部指针指向的内存就已经被释放了!但是有时候我们还是可以返回局部指原创 2016-09-01 12:37:41 · 401 阅读 · 0 评论 -
cocos lua 实现原声语音 流程概述
由于游戏需要,在cocos里面集成了自己原声的语音系统。虽然做的过程踩了很多的坑,并且过程很痛苦。这个过程需要你去了解很多的东西。 我是直接使用的lua 调用C++,c++在通过jni 调用安卓java来实现的语音录制并且播放。总体就是微信的聊天方式,语音内容都可以保存并且重复播放。下面我们就来梳理一下大概的流程。系统流程描述: lua通过C++调用java的recordVoice接口,java原创 2016-08-26 17:15:04 · 4518 阅读 · 0 评论 -
cocos lua 实现热更新
第一次搞热更新,这里记录一下全过程,方面以后查看。原理:每次登陆游戏利用cocos的assetManager从服务器拉去当前最新的两个文件。 一个是version.mainifest,一个project.mainifest. 这两个文件都是xml的描述文件。一个包含了版本信息,第二个包含了游戏所有资源的MD5码。首先通过version文件对比本地的版本是否相同,如果不相同,再通过跟本地的proje原创 2016-08-22 10:51:15 · 6637 阅读 · 9 评论 -
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 · 624 阅读 · 0 评论 -
安卓苹果技术常识
安卓和苹果在后台杀死游戏程序的时候并不会执行当前游戏的类的onExit 函数。具体原因不清楚。原创 2016-11-09 14:37:37 · 264 阅读 · 0 评论 -
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 · 1167 阅读 · 0 评论 -
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 · 3816 阅读 · 0 评论 -
cocos clone 的坑
Widget* child = dynamic_cast(subWidget); if (child) { addChild(child->clone()); }由于Sprite并不是Widget的子类,如果子控件是Sprite的话就不会克隆了!!! 包括node 节点,也不能成功的clone,反正不是wi原创 2017-03-06 20:19:46 · 4306 阅读 · 2 评论 -
vs shfit+ctrl+f 全局搜索失
其原因是其他软件占用了该快捷键。例如搜狗拼音,繁体切换就是这个快捷,将其取消vs 全局搜搜变正常工作原创 2017-05-08 10:43:51 · 3625 阅读 · 1 评论 -
SDK armature 和 animation spine
1 首先第一个 armature 和 SpineAnimation 对应的是cocos 提供的两套动画,分别对应atlas文件,还有plist文件。一套是cocos编辑器自带的,一套是骨骼动画编辑器制作。 当然现在捕鱼游戏当中还有鱼的动画,这个是直接用动画帧实现的,以后可能还有K帧的使用。 而 cocos提供的帧动画还是和原来一样,通过图片一张张放入frame当中,然后进行播放。2 第三方相当于其...原创 2018-03-15 22:18:28 · 354 阅读 · 0 评论 -
Tiledmap基本使用教程
如果你是第一次使用tiledmap的朋友,那么这篇文章一定能给你带来一些帮助。相信大家都玩过飞行射击类游戏,游戏中不断有敌方飞机biubiu的飞向玩家,那么这些飞机不是随机出现,是可以用tiledmap在地图上面标记出来,然后加上代码,让他们在一定的时间出现。 下面给大家带来tiledmap基本使用的详细过程,我们在tiledmap中画一个方框,并且在cocos中得到这个方框的位置。翔仔coco原创 2016-01-07 21:28:11 · 18906 阅读 · 1 评论 -
cocos2d 释放资源 总结
cocos2d的自动回收机制用起来还是挺好用的,但是有的时候我们还是要写单一的函数来实现场景的释放,经过retain后的类的释放,std::vector的释放。如果只是单一的一个场景类或者Layer类,在使用完毕后可以直接调用removefromParent()进行释放,这时候场景类相当于被addchidren()的“父亲”遗弃的婴儿,在cocos2d的自动回收机制中调用自己的析构函数进行释放,首原创 2016-03-19 12:24:26 · 1990 阅读 · 0 评论 -
类 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 · 755 阅读 · 0 评论 -
addImageAsync异步加载资源和进度条ProgressTimer的实现
我们要实现的效果图如下: 异步加载: 在进入游戏的时候,玩家都会看到这样的进度条,当翔仔第一次看到这个效果的时候单纯的以为这只是为了游戏的视觉效果而制作的一个进度条。后来才知道开发人员是不得已为之必须制作这个进度条,才能让游戏看起来流畅,顺利的运行。 cocos是一个单线程的引擎,单线程的一个优点就是安全,不用考虑多线程造成的总总困扰。但是在一个游戏场景结束后进入另外一个新的游戏场景我们总会原创 2015-12-30 14:00:15 · 494 阅读 · 0 评论 -
多线程
1.为什么要使用多线程Cocos2d-x是一个单线程循环的引擎,引擎通过每一帧之间更新游戏中各元素的状态,以保证它们之间互不干扰,这个过程中尽管看起来成程序像是在并行运行,但实际上却是一个串行过程。单线程的好处就是我们无需去担心游戏对象更新的线程安全问题,但是当我们的程序遇到某些费时的I/O操作时,单线程的缺点也就显现出来了。举例来说,在游戏进行场景跳转时,通常我们会释放当前场景的资源并加载下一个场转载 2015-12-30 15:20:40 · 306 阅读 · 0 评论 -
添加场景的进入方式(从左往右,渐进)
相信熟悉cocos2d-x的朋友对于场景的转换在清楚不过了,那么我们这次给场景的转换加入一些效果。 从左往右:场景从左边往右边移动的方式呈现出来。 渐进:场景在一定时间内由暗到明的呈现出来。 还有很多的出场方式,这里翔仔就不一一列出了,下面给出示例代码:auto scene = New* Scene; TransitionScene* tra = getTransition(s原创 2015-12-30 15:47:06 · 350 阅读 · 0 评论 -
cocos3.7物理引擎基本使用
我们将完成一个简单的实例来介绍cocos物理的引擎的基本使用: 我们要实现的是一个小球不停的在屏幕中进行弹跳,没有重力,完全弹力。首先创建一个场景,该场景不能使普通的场景,必须要先创建物理场景才能在该场景中加入物理的元素,比如刚体(就是我们的小球),重力,摩擦力,弹力。Scene*GameScene::createScene(){ //创建一个物理场景。 mScene =原创 2016-01-18 16:46:03 · 1289 阅读 · 1 评论 -
cocostduio Text 控件 添加监听无法响应
今天做了一个Text控件来显示角色的对话,如图 上面显示的角色名字,下面是内容,使用的是一个cocostudio的Text 空件。将cocostduio发布的csb文件添加到场景中:Node *node = CSLoader::createNode(csbFile); m_name = static_cast<Text *>(node->getChildByTag(142)); m原创 2015-12-31 18:35:18 · 397 阅读 · 0 评论 -
cocos2d中的function和CC_CALLBACK组合
首先我们来看一个异步加载的addImageAsync函数Director::getInstance()->getTextureCache()->addImageAsync(p, CC_CALLBACK_0(LoadingScene::readCallback, this));addImageAsync函数定义:void TextureCache::addImageAsync(const std::s原创 2016-01-03 17:12:30 · 660 阅读 · 0 评论 -
cocos纯代码写一个简单的菜单
相信大多数朋友都是再用cocostudio做菜单,确实也比较方便。今天来给大家说说在cocos中用纯代码写一个简单的菜单。非常简单。首先给大家说一下整体思路,要做一个菜单必须要有菜单项,还有一个装这些菜单项的容器,就是所谓的菜单,所以你必须要先创建好你的菜单项,然后放入菜单中便可。下面给大家一个简单的例子,详解都在注释中: //创建一个菜单项,第一个参数,菜单项的图片,第二个参数是菜单项原创 2016-01-04 12:23:00 · 1102 阅读 · 0 评论 -
cocos飞机游戏地图滚动速度由快到慢的实现
相信大家都玩飞机射击游戏时,刚进入场景,感觉飞机飞速前进,然后速度慢慢变慢,最终到正常速度,然后开始正常的游戏。其实就是背景地图滚动由快到慢的过程。现在我们就是要实现这个功能,让地图滚动速度由快到慢。我们把这个功能封装到一个background类里面,然后再主场景的update函数里面进行调用。在给出之前我们先来讲解一下地图滚动的原理:在这次实现当中我们准备的是两张可以拼接在一起的图片(跟飞机游原创 2016-01-05 13:23:12 · 738 阅读 · 0 评论 -
Cocos物理引擎刚体的3种掩码
在一些物理世界游戏的设计中,肯定会涉及到一些刚体的接触,那么这些刚体的接触我们是可以决定到底碰撞与否,接触的时候是否调用回调函数来进行一些处理,那么下面我们就来介绍一下刚体的3种掩码值。首先看下面3个函数triangle->getPhysicsBody()->setCategoryBitmask(0x08); // 1000 这个函数是设置刚体的种类掩码值,掩码值最多可以用32位的2进制表原创 2016-01-22 12:59:51 · 1805 阅读 · 0 评论 -
使用CSLoader获取Node后再获取精灵失败
今天在写代码的时候遇到一个很郁闷的问题,用cocostudio做了一个界面,然后将其加载到程序当中,也成功获取了node节点下的几个精灵,但唯独有一个精灵获取后使用失败,程序中断,下面代码:auto node = CSLoader::createNode("cocostudio/Scene.csb"); mOnes = static_cast<Sprite*>(node->getChildB原创 2016-01-23 12:03:29 · 2440 阅读 · 0 评论 -
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 · 704 阅读 · 0 评论 -
Layer::init() 到底做了什么
从一开始写cocos的代码就开始想着这个问题,由于这个问题并没有给我的编程带来任何的bug,所以一直没有解决。(其实原因是不会找源代码····)今天就来看看Layer::init()到底做了什么事情。首先我们来看看到底怎么找Layer.cpp文件,每次按F12都只能看到Layer.h文件,蛋疼! 打开你的项目: 对!就是这个文件夹 点进去,然后找到2d/Layer.cpp下面大家就可以找到Lay原创 2016-01-23 16:29:56 · 1795 阅读 · 0 评论 -
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 · 2316 阅读 · 0 评论 -
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 · 671 阅读 · 0 评论 -
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 · 364 阅读 · 0 评论 -
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 · 4442 阅读 · 0 评论 -
callBackName cannot be found&fullPathForFilename: No file found at replay.png. 解决方案
相信在大家再用cocostudio制作出来的csb文件时候都会偶尔都会出现这样的报错,要不是就是游戏中的显示的控件不全。有的图片没有显示,有的按钮回调函数并没有进行回调。下面来给大家一些解决方案。callBackName cannot be found 我也只遇到过一次回调函数写出来,点击按钮的时候并没有调用回调函数。原因是因为你自己的csb中也许按钮和其他的图片或者控件的逻辑标签重复了,自己原创 2016-02-04 11:11:50 · 2301 阅读 · 0 评论 -
lua 继承实现
--首先第一步需要是克隆,是为了能够实现子类拥有父类的所有函数和成员变量function clone(object) local lookup_table = {} local function _copy(object) if type(object) ~= "table" then --只有是table 那么我们才进行一个递归拷贝 retur...原创 2018-03-20 21:05:49 · 439 阅读 · 0 评论