COCOS2D - 技术教程文章

【cocos2d-js官方文档】二十二、project.json【代码】

概述 项目相关配置,由原来的cocos2d.js中转移到project.json中,该文件需要与index.html同级,一般建议放在根目录下。 由原来的cocos2d.js改为project.json的好处如下:原来的cocos2d.js中参杂了一些逻辑代码,无法很好体现其就是作为项目的配置文件。用json格式作为配置文件会更友好。也可以使得cocos-console、cocos-utils,甚至是用户自定义脚本工具能够使用同一个配置文件。字段说明debugMode 相当于原来的COCOS2D_DEBUG,其中...

iOS_31_cocos2d_Label【图】

最终效果图:cocos2d v3中Label只有2种:一、CCLabelTTF注意事项:CCLabelTTF,可以随时setString,改变文字,但是:非常耗性能,因为,它会为每一个新的string,创建一个新的纹理,进行渲染,因此,不能频繁地改变文字的内容;只有显示固定的文字时,才建议使用CCLabelTTF二、CCLabelBMFont使用注意事项:BMFont是专门为了频繁更换label内容而生,因为,每一个字符如a、b、1都是一个sprite,都对应着一个图片/纹理,因此会以占用更多的内存为代价,从而...

Cocos2dx 中大量读取图片的实现

首先肯定得对图片进行分类,如一款卡牌游戏,图片有角色,角色icon,武器,武器icon等;这里用枚举对其分类标识:enum UIIMAGE {ARMOR_IMG,ARMOR_ICON,EQUIP_IMG,EQUIP_ICON,ITEM_ICON,MAX_UIIMAGE } 有了图片分类,其加载路径也是一一对应的,故路径分类也如下:static const char * UIIMAGEPATH[MAX_UIIMAGE] = {"armorImg\\","armorIcon\\","equipImg\\","equipIcon\\","itemIcon\\", } 接着就是实现图片加载的方法...

cocos2d-x项目101次相遇: Scenes , Director, Layers, Sprites

cocos2d-x 101次相遇 / 文件夹 1 安装和环境搭建 -xcode 2 Scenes , Director, Layers, Sprites 3 建立图片菜单 4 在HelloWorld上--建立新场景 5 添加一个精灵sprite 5.1 缩小sprite并使之完整显示 6 action ,移动sprite 7 3.0 的点击事件,CCTouchDelegate已经停用了 8 使用触摸事件移动 精灵 2.Scenes 。 Director, Layers。 Sprites开发cocos2d 应用程序,必须先了解例如以下4个概念: Scenes ...

Cocos2d-x Box2D物理引擎编译设置【图】

在解决方案找到TestCpp项目,打开其属性=》C/C++ =》预处理器==》预处理器定义, 添加“CC_ENABLE_BOX2D_INTEGRATION=1”, 修改“CC_ENABLE_CHIPMUNK_INTEGRATION=0”, 打开libExtensions项目同样找到预处理器定义, 添加“CC_ENABLE_BOX2D_INTEGRATION=1” , 删除“CC_ENABLE_CHIPMUNK_INTEGRATION=1” 原文:http://blog.csdn.net/oyangyufu/article/details/26733711

cocos2d-x box2d Demo注解

勤奋努力,持之以恒。核心概念Box2D 中有一些主要的对象,这里我们先做一个简要的定义,在随后的文档里会有更具体的描写叙述。刚体(rigid body)一块十分坚硬的物质,它上面的不论什么两点之间的距离都是全然不变的。它们就像钻石那样坚硬。 在后面的讨论中,我们用物体(body)来取代刚体。 形状(shape)一块严格依附于物体(body)的 2D 碰撞几何结构(collision geometry)。形状具有摩擦(friction)和恢复(restitution)的材料性质。

Cocos2D:塔防游戏制作之旅(十二)【代码】

以上代码块相当直观 - 但是它分解的有些细致了.首先,敌人通过传递HelloWorldLayer对象的引用而初始化.在init方法里,少数重要的变量被设置:maxHP:定义敌人有多经打(Tough guy,eh?)wakingSpeed:定义敌人移动的有多快mySprite:存储敌人可视化的表示destinationWaypoint:存储下一个路径点的引用.其中update方法是真正见证奇迹的地方(where the magic happens),它每一帧被调用,并且首先检查自身是否到达了目的路径点,使用的方法是你在前...

Cocos2D中使用CCDrawNode绘制几何图形崩溃的解决

在cocos2D v3.x中已经不能像在v2.x中那样直接调用ccDrawXXX函数来绘制几何图形了.我们可以使用CCDrawNode或者CCRenderer来绘制图形.但是官方的Api手册中说的很清楚,CCDrawNode只推荐放在游戏的调试中调用,因为改变其状态必须先删除再重新添加,导致在绘制大量复杂几何图形时性能会很差.在cocos2D v2.x中直接调用OpenGL的绘制一般放在draw方法中,但是在v3.4中实际测试发现,将CCDrawNode的绘制放在draw会导致App崩溃,错误大意为不能在...

Cocos2d-x 怪物智能AI怪物也有智商----之游戏开发《赵云要格斗》(6)【图】

这里是Evankaka的博客,欢迎大家前面讨论与交流~~~~~~ 转载请注明出处http://write.blog.csdn.net/postedit/42611031 这几天一直在研究怪物的AI,博客都没怎么更新。本文将主要来讲讲游戏开发中的怪物智能,一个好的游戏一般怪物都要分等级,这样我们游戏玩起来才有意思,怪物如果智商太高,游戏难度大。怪物如果智商太低,游戏玩起来又没有意思。一般好的游戏低级怪物和中级怪物占大部分,高级怪物一般是BOSS级怪物...

Mac环境下cocos2d-x开发环境完全指南【图】

本教程来自CSDN博客:http://blog.csdn.net/zhaokaiqiang1992转载请说明!本教程主要指导新手在Mac环境下cocos2d-x开发环境搭建。1.cocos2d-x下载下载网站:http://cn.cocos2d-x.org/download/下载3.x版本后,解压即可2.必备软件安装及环境配置进行cocos2d-x开发,必须安装的软件有Java SDK(Mac自带)Ant(安装可以参考这个教程:http://www.cnblogs.com/ilovewindy/p/3860648.html)Python(Mac自带)Xcode(下载安装即可)NDK(...

[原创]使用命令行工具提升cocos2d-x开发效率(二)之CocosBuilder篇【代码】【图】

如果你正在使用CocosBuilder或者是其他基于CocosBuilder源码改装而成的工具为你的游戏搭建场景或者UI,那你一定要看看这篇文章:)你是否已经厌倦了无聊的手工publish操作?反正我是受够了。对于我这个懒人,最好的方式莫过于有一个命令行工具,可以让我把publish各种ccb的工作串到我的workflow里面。有了这个想法后,我开始上网搜索,没错,我还真找到了一点线索,在几个人的博客和官方论坛的帖子中,有人提到了这个工具,不过郁闷...

cocos2dx 场景切换【代码】

版本是 cocos2dx 3.3 场景切换的时刻是:(代码有删减)void Director::drawScene() {// calculate "global" dt calculateDeltaTime();if (_nextScene){setNextScene();}}每一帧都会检查,看是不是有 _nextScene, 也就是 是不是需要进行场景切换了。 一般场景切换的过程:当添加一个场景时,正在运行的场景会调用 _runningScene->onExitTransitionDidStart(); _runningScene->onExit();然后新添加的场景会调用onEn...

【Cocos2d-x for WP8 学习整理】(5)文字显示全整理【图】

原文:【Cocos2d-x for WP8 学习整理】(5)文字显示全整理学习 Cocos2d-x 有一阵了,现在要做个小东西,第一步就遇到了文字展示的问题,于是想把可能遇到的问题统统整理一下。这一部分也不局限于wp8,全平台应该都是一个解决方案。先在脑袋里大致想了一下,大致也就分为两个部分,第一部分是普通文字如何展示,第二部分是老大难的中文展示问题。文本显示控件 ...

cocos2d-x 源码分析 : EventDispatcher、EventListener、Event 源码分析 (新触摸机制,新的NotificationCenter机制)

源码版本来自3.x,转载请注明cocos2d-x 源码分析总目录http://blog.csdn.net/u011225840/article/details/317431291.继承结构1.1 结构 不详吐槽太多,也不贴图了,贴图要审核好久好久好久好久。 从小到大,先来看下Event的结构。 1.Event--------EventTouch,EventCustom,EventMouse,EventKeyboard,EventFocus,EventAcceleration 其中,EventTouch 和 EventCustom是比较特殊的两个Event。EventTouch是3.x...

cocos2dx-js——Widget的addTouchEventListener改善【代码】

本文转载于:http://blog.csdn.net/wade333777/article/details/51537357一、基本使用addTouchEventListener是属于Widget下的触摸事件相关的操作,基本使用规则如下:var button = new ccui.Button() button.addTouchEventListener(this.touchEvent, this)touchEvent: function (sender, type) {switch (type) {case ccui.Widget.TOUCH_BEGAN:this._topDisplayLabel.setString("Touch Down");break;case ccui.Widget.TOUCH_MOVED:t...

【cocos2d-x】3.0使用cocos-console创建,编,部署游戏【代码】

原文地址:http://fengchenluoyu.duapp.com/272.html cocos2d-x 3.0開始添加了一个cocos-console组件,它位于cocos2d-x 3.0的tools以下。 它可以创建,编译和部署cocos2d-x的游戏。以下让我们来看看它究竟是怎么使用的勒! 首先须要安装一些依赖环境。python 2.7 。vs2012,android sdk ,android ndk,apache ant (mac和window各司平台) 1、将cocos2d-x 3.0解压,进入文件夹,执行setup.py (window双击,linux 和 mac ./setup....

cocos2d-x实用效果之BOX2D的圆形包围边界【图】

本文基于cocos2d-x2.2.3,并未在3.0之后的版本下编写,仅仅是提供一个思路,方便日后其他场景使用到该功能点可以参考,也没有详细讲述box2d物理引擎的基础知识,相关知识请自行多参考其他技术文档。 使用box2d物理引擎,通常需要我们自己给定一个边界来限制body的活动范围,最常用的是在屏幕的边界使用四条边来包围,形成一个矩形。但如果我们的需求是在一个圆形范围内,仅仅想通过一个中心点和半径来确定这个范围,该如何处...

Cocos2d-x3.0 lua绑定C++类【图】

这里记录下我实现Lua绑定的全过程。原文地址:http://blog.csdn.net/qqmcy/article/details/26099859准备工作:1、创一个一个Lua的2dx工程。(这个网上已经有好多了)2、创一个C++类。TestScene.h 这个只是一个简单的场景// // TestScene.h // uitestLua // // Created by 杜甲 on 14-5-17. // //#ifndef __uitestLua__TestScene__ #define __uitestLua__TestScene__#include "cocos2d.h" USING_NS_CC;class TestScene :public...

Cocos2d入门--3-- 向量的应用【代码】【图】

小球向一个方向持续运动的DemoHelloWorldScene.h...... //设置一个protected的属性 protected:cocos2d::Vec2 _vec; ......HelloWorldScene.cpp//这个是通过随机数设置向量的方向 _vec.set(random(-0.1f, 1.0f), random(-1.0f, 1.0f)); //通过normalize这个标准化函数,能够使得向量的大小为1 _vec.normalize();auto dot = DrawNode::create();dot -> drawDot(Vec2(0, 0), 5, Color4F(1.0f,1.0f,1.0f,1.0f)); addChild(dot);dot -> ...

如何用ccache加速cocos2d-x android版本的编译

以下步骤在MAC下测试通过:首先是安装CCache, 可以用homebrewbrew install --HEAD ccache也可以用源码安装git clone https://github.com/jrosdahl/ccache.gitcd ccache./autogen.sh./configuremakemake install如果提示autoheader找不到,要先装个automakebrew install automake当然,如果提示brew找不到,要先装一个homebrewruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"CCache装好以后,需要配置...

x86 Android游戏开发专题篇之使用google breakpad捕捉c++崩溃(以cocos2dx为例)【图】

最近一直都在x86设备上进行游戏开发,就c++层和Android java层倒没有什么要特别注意的(除了需要注意一下修改Application.mk指定平台外),在c++崩溃的时候,很多时候看不到堆栈,只能看到一个信号,所以由于工作需要,使用google breakpad来进行异常捕捉。谷歌被墙很麻烦,索性就把breakpad打包放这里供需要的童鞋下载,google breakpad下载。1.下载google breakpad下载地址是 http://code.google.com/p/google-breakpad/source/...

cocos2d-x学习记录4——图形绘制【代码】【图】

重写CCNode的draw函数能够绘制出各种基本图形,如点、直线、多边形、园、贝塞尔曲线等,同时还可以设置绘制的颜色和宽度。MyScene的draw函数 1void MyScene::draw()2{3 ccDrawColor4B(255, 0, 0, 255);4 glLineWidth(5);5 ccDrawLine( ccp(0, 0), ccp(200, 200) );6 ccDrawColor4B(0, 255, 0, 255);7 ccDrawLine( ccp(200, 200), ccp(400, 200) );8 9 ccPointSize(20); 10 ccDrawColor4B(200, 0, 200,...

cocos2dx游戏--欢欢英雄传说--为敌人添加移动和攻击动作【代码】【图】

这里主要为敌人添加了一个移动动作和攻击动作。移动动作是很简略的我动他也动的方式。攻击动作是很简单的我打他也打的方式。效果:代码:#ifndef __Progress__ #define __Progress__ #include "cocos2d.h" USING_NS_CC;class Progress : public Sprite { public:bool init(constchar* background, constchar* fillname);/*the inputs are SpriteFrame Names.they should be loaded into SpriteFrameCache before calling this.*/st...

Cocos2d-x游戏工程中文字库的解决方案【图】

准备条件:1、JDK7(一般都自带JRE7了)以及JRE7。2、VS 2013(如果想要在PC上运行的话,需要安装)。3、NDK-r9(注意32位和64位)。4、Eclipse。5、Android SDK以及ADT插件。6、Cygwin(最好是最新版)。7、Python2.7。8、Cocos2d-x-2.2.5。9、一个cocos2d-x游戏项目(airplaneward.rar这个源码不能给)。10、Iconv字库(见附件iconv.rar,附件超过2M了,不能上传,有需要的朋友Q我)。第一步:将airplaneward.rar解压到Cocos2d-x...

cocos2dx clippingNode的实现原理【代码】

clippingNode是利用opengl的裁剪缓冲区实现的,因为最近有使用这个功能需要,顺便把这部分实现看看了看。 opengl的裁剪主要有以下几个步骤:1、开启裁剪缓冲区2、设置裁剪缓冲区中的mask。3、正常绘制图形,这个时候会根据裁剪缓冲区的值和设置好的比较函数进行计算,根据通过与否选择是否会知道framebuffer4、绘制完成之后关闭裁剪缓冲区这几个步骤在cocos2dx的clippingNode中体现在以下的这段代码中:<pre name="code" class="...

Cocos2d-x 3.2 大富翁游戏项目开发-第三十部分 项目移植

本人只有android设备,没有苹果,无法测试,就不说怎么移植到苹果了。能力有限,请各位见谅首先调整屏幕适配修改AppDelegate.cpp文件 //glview->setFrameSize(800, 480);去掉,在真机上不需要,屏幕大小已经有了 修改为ResolutionPolicy::EXACT_FIT :保证了设计区域完全铺满屏幕,但是可能会出现图像拉伸 glview->setDesignResolutionSize(800, 480, ResolutionPolicy::EXACT_FIT); 1、导入工程到Eclipse 打开eclipse,在...

Cocos2d-x 2.3.3版本 FlappyBird【图】

Cocos2d-x 2.3.3版本 FlappyBird 本篇博客基于Cocos2d-x 2.3.3, 介绍怎样开发一款之前非常火的一款游戏FlappyBird。本篇博客内容大纲例如以下: 1. 怎样创建Cocos2d-x 2.3.3 项目 2. 初始化Box2d物理世界,并模拟物理世界 3. 怎样加入小鸟到物理世界 4. 怎样加入地板 5. 加入水管 6. 碰撞检測 7. 本文总结效果图:1. 怎样创建Cocos2d-x 2.3.3本篇博客是基于Cocos2d-x 2.3.3,刚開始学习的人能够选择这个版本号学习,也能够从...

Cocos2d-x使用UserDefault数据持久化实例:保存背景音乐和音效设置【图】

UserDefault可以实现数据的存储,但是它的使用不能泛滥,具体讲一般情况下不会使用它保存大量的数据,它没有SQL语句那样的灵活。UserDefault除了保存游戏设置外,还有可以长期保持游戏精灵等对象的状态。我们通过一个实例介绍一下在游戏项目中如何使用UserDefault。如图所示,在Setting场景中可以设置是否播放背景音乐和音效,现在我们将它完善将选择的状态保存到UserDefault中。设置背景音乐与音效(上图HelloWorld场景、下图Sett...

游戏基础元素之精灵——Cocos2d-x学习历程(九)【代码】

1.创建精灵 在实际使用中,精灵是由一个纹理创建的。在不加任何设置的情况下,精灵就是一张显示在屏幕上的图片。通常精灵置于层下,因此我们首选在层的初始化方法中创建精灵,设置属性,并添加到层中。 有多种方式可以创建精灵: (1)直接创建auto sprite = Sprite::create("HelloWorld.png");this->addChild(sprite,0); (2)使用纹理来创建精灵auto sprite1 = Sprite::createWithTexture(TextureCache::getInstance()->a...

【Cocos2d入门教程三】HelloWorld之一目了然【代码】【图】

什么程序都是从HelloWorld先开始。同样Cocos2d-x我们先从HelloWorld进行下手、下面是HelloWorld的运行完成图: 建立好的Cocos游戏项目中会有两个比较常用接触的文件夹。分别为Classes与resource。Classes存取代码文件,resource存取资源文件,下面为完整的项目架构: 我们先来看下最基本的AppDelegate.cpp类 1 #include "AppDelegate.h" 2 #include "HelloWorldScene.h" 3 4 5//命名空间 6USING_NS_CC;7 8 9//构造函数 10Ap...