Cocos2dx学习笔记一

目录:

第一部分:Cocos2d-x介绍

第二部分:Windows 7环境下Visual Studio 2012中搭建Cocos2d-x 3.3beta0集成开发环境

第三部分:HelloWorld示例详解

 

一、        Cocos2d-x介绍

  1. Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的。这是一个C++ Cocos2d-iPhone项目的版本。Cocos2d-X发展的重点是围绕Cocos2d跨平台,Cocos2d-x提供的框架。手机游戏,可以写在C++或者Lua中,使用API是Cocos2d-iPhone完全兼容。Cocos2d-x项目可以很容易地建立和运行在iOS,Android,黑莓Blackberry等操作系统中。Cocos2d-x还支持Windows、Mac和Linux等桌面操作系统,因此,开发者编写的源代码很容易在桌面操作系统中编辑和调试。
  2. 为什么使用这个游戏框架?

——它使用标准C和C++语音开发,跨平台性非常好,目前来说主流的平台它都支持。如:只需要写一份代码就可以在Android平台和IOS平台运行。目前我们所看见的几乎所有的2D游戏都是使用这个游戏框架来开发的(原因在于其API设计非常合理,使用非常方便)

  3. Cocos2d  -iPhone是使用objective C语音进行开发,只能运行在ios平台。

Cocos2d-x是这个框架的一个C++语言版的实现,是跨平台的。

Cocos2d-html5使用javascript语言开发。

  4. http://cocos2d-x.org/官网

  5. learn中可以看到开发人员的帮助文档http://cocos2d-x.org/wiki/Cocos2d-x

  6. Reference中可以看到该框架中每个类的说明http://www.cocos2d-x.org/reference/native-cpp/V3.3rc0/index.html

二、Windows 7环境下Visual Studio 2012中搭建Cocos2d-x 3.3beta0集成开发环境。

步骤:

  1. windows下Cocos2d-x 3.3beta0集成开发环境配置
  2. 创建并运行Cocos2d-x工程
  3. 如何把cocos2d-x程序编译成Android程序

需要的文件:

  1. cocos2d-x-3.3beta0.zip
  2. python-2.7.8.msi
  3. apache-ant-1.9.4-bin.zip
  4. adt-bundle-windows-x86_64-20140702.zip
  5. android-ndk-r9d-windows-x86_64.zip

(实际上还需要先安装好Eclipse和Visual Studio 2012并配置好相应环境变量)

(一) windows下Cocos2d-x 3.3beta0集成开发环境配置

1.  安装Python,设置环境变量(计算机—右键属性—高级系统设置—环境变量—用户变量)Path,添加路E:\Cocos2D\Python27,测试:cmd-python;

2.  将上面的几个压缩包解压到一个自定义安装目录中(需要注意的是路径不可以有空格,这是后面配置NDK的必要条件);

3.  cmd-进入cocos2d-x-3.3beta0路径,dir一下,然后运行setup.py

1)       配置NDK_ROOT(该路径绝对不可以有空格):

E:\Cocos2D\adt-bundle-windows-x86_64-20140702\android-ndk-r9d

(这个是我自己解压到adt-bundle-windows-x86_64-20140702中去的)

2)       配置ANDROID_SDK_ROOT:

E:\Cocos2D\adt-bundle-windows-x86_64-20140702\sdk

3)       配置ANT_ROOT:

E:\Cocos2D\Cocos2D\apache-ant-1.9.4\bin

4.  测试:cmd-cocos;

(二)创建并运行Cocos2d-x工程

方法一:使用cocos2d-x-3.0beta2\tools\project-creator中的create_project.py来创建

双击create_project.py

如图键入工程名、包名,选择工程路径和所使用的语言,单击creat按钮。

创建成功后可以在E:\Cocos2D\cocos2dx\HelloC++看到它有Android、mac、linux、win32平台,选择win32平台

双击打开HelloC++,使用Visual Studio 2012打开解决方案。并按F5运行。

方法二:在命令行中创建

1.  cmd-进入想要用来创建Cocos2d-x工程的目录(①e: ②cd E:\Cocos2D\cocos2dx),使用cocos new HelloCC -l cpp -p com.jikexueyuan.hellocc -d .在当前目录下创建HelloCC工程,使用c++语言,包名为com.jikexueyuan.hellocc;

2.  创建完成后使用explorer .来打开用来创建Cocos2d-x工程的目录,打开proj.win32目录,双击HelloCC.sln使用Visual Studio 2012打开解决方案。

3.  在解决方案资源管器中打开Classes目录,双击HelloWorldScene.cpp,这就是程序源代码,按F5编译运行。

(三)把cocos2d-x程序编译成Android程序

1. 方法一cmd-进入想要编译成Android程序的Cocos2d-x工程HelloCC的目录(①e: ②

E:\Cocos2D\cocos2dx\HelloCC),使用cocos compile -p android编译直接生成apk;

在此过程中遇到的问题如下:

1)       报错“java 显示不是内部或外部命令,也不是可运行程序”,原因是java的环境变量没有设置好。新建系统变量JAVA_HOME,值为:e:\Program Files\Java\jdk1.7.0_67\,然后在系统变量path里面增加%JAVA_HOME%\bin;

2)       报错“Unable to resolve project target ‘android-10‘”,意思是本机的安卓AVD版本没有Cocos2d-x工程指定的版本。解决方法是Download the API10 for Android, I did it from the Android SDK manager.

3)       另外遇到两个奇葩的问题,但不影响编译成apk:

①在一开始编译的时候会报错。我们使用cocos compile –p android>1.txt将编译信息放到1这个txt文本文件中。可以看到一开始的报错如下:

ERROR: SWT folder ‘‘ does not exist.

Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.

网查原因为Android环境配置中出现了空格,测试cmd-android h是可以成功的:

②报错如下:

但是检查C:\Windows\System32下的java.exe是没有问题的:

以上这两个问题虽然一直出现,但不会影响编译成api,成功的截图如下:

编译成功。

Apk目录为E:\Cocos2D\cocos2dx\HelloCC\bin\debug\android,可直接将其发送到手机上安装运行,下图为在手机中运行的截图。

  1. 方法二 手动将本机代码编译成库,然后用Eclipse把它打包成Android应用程序。

1)       cmd-进入E:\Cocos2D\cocos2dx\HelloCC\proj.android,执行build_native.py生成so文件。

2)       打开Eclipse(注意Eclipse的工作空间不能和myEclipse一致),import

E:\Cocos2D\cocos2dx\HelloCC\proj.android(导入时就已经在执行编译的操作,此时cmd中也在编译,可将cmd关闭)。

如果导入Eclipse后报错:”Cocos2dxActivity cannot be resolved…”。解决的方法是将

E:\Cocos2D\cocos2dx\HelloCC\cocos2d\cocos\platform\android\java\src目录下的org目录(此为Android为我们提供的源代码)直接拖到Eclipse中的HelloCC的src目录下(-copy films and folders-yes),这样就将系统提供的类拷贝进来了。

3)       此时打开libs目录下可以看到它已经生成的本机库文件

Run as android application:

这种方法在Eclipse中运行有时成功有时失败,至今还没有找到原因。无妨,可以直接用前一种方法自动生成APK文件。

三、    HelloWorld示例详解

在Visual Studio 2012打开项目解决方案

  1. 应用程序的开始方法:


bool AppDelegate::applicationDidFinishLaunching() {

// initialize director

auto director = Director::getInstance();//获取一个Director:

auto glview = director->getOpenGLView();//创建一个EGLView来呈现图形

if(!glview) {

glview = GLViewImpl::create("My Game");

director->setOpenGLView(glview);

}

// turn on display FPS

director->setDisplayStats(true);// 设置是否呈现帧频数据

// set FPS. the default value is 1.0/60 if you don‘t call this

director->setAnimationInterval(1.0 / 60);// 设置帧频

// create a scene. it‘s an autorelease object

auto scene = HelloWorld::createScene();//创建Scene(场景)

// run

director->runWithScene(scene);// 开始执行,启动这个场景(启动后就可以呈现内容)

return true;

}

  2. class HelloWorld : public cocos2d::Layer


class HelloWorld : public cocos2d::Layer

{// HelloWorld是一个layer类,继承自layer,其父级容器是一个scene

public:

// there‘s no ‘id‘ in cpp, so we recommend returning the class instance pointer

static cocos2d::Scene* createScene();//创建scene

// Here‘s a difference. Method ‘init‘ in cocos2d-x returns bool, instead of returning ‘id‘ in cocos2d-iphone

virtual bool init();

// a selector callback

void menuCloseCallback(cocos2d::Ref* pSender);

// implement the "static create()" method manually

CREATE_FUNC(HelloWorld);

};

  3. Scene* HelloWorld::createScene()


Scene* HelloWorld::createScene()

{

// ‘scene‘ is an autorelease object

auto scene = Scene::create();//创建一个scene

// ‘layer‘ is an autorelease object

auto layer = HelloWorld::create();//创建一个layer

// add layer as a child to scene

scene->addChild(layer);//将layer添加到scene中

// return the scene

return scene;//将scene实例返回

}

时间: 2024-12-11 14:58:45

Cocos2dx学习笔记一的相关文章

【Cocos2D-X 学习笔记】为精灵添加单点触控

由于Cocos2d-x处于新学的阶段,因此最近也无法进行系统地更新,只会选择一些典型的Demo贴上来,一来是与大家分享,而来也可以作为以后回顾时的参考. 今天介绍一下Cocos2d-x的触摸事件处理,了解Android开发的朋友们知道,Android里会用一个OnClickListener()进行事件监听,而在J2SE中也会有Event类实现专门的监听处理.在Cocos2d-x中,因为是游戏引擎,用户在玩游戏时总是要通过屏幕与游戏进行交互,可想而知触摸事件是主要处理的事件.这里主要讲一下如何为精

cocos2dx学习笔记(2)

昨天尝试了cocos2dx在win下的开发环境配置,并且运行了cocos的helloword程序,晚上想要尝试一下android开发环境配置,顺便学习cocos在eclipse下的JNI机制,按照cocoa中文论坛的android环境配置弄了NDK,并配置了环境变量,由于想要学习cocos的luabind机制(这个我们公司游戏的引擎用的很多,确实比较有兴趣),一切搞定不明就里的用eclipse导入了cocos3.0rc中的tests目录下的cpp-tests工程(这算android开发久了的毛病

Cocos2dx 学习笔记整理----场景切换

据说Cocos2dx场景切换的方法有32种:cocos2dx 常见的32种切换场景的动画 无需一一求证,只需要知道切换场景需要怎么做就行了. 作为导演CCDirector,切换场景的事情当然归它管了. 切换场景的接口如下: ? 1 CCDirector::sharedDirector()->replaceScene(cocos2d:CCScene * pScene); 所以,我们只要把需要切换的场景实例传进去就可以了. ? 1 2 CCScene * pScene = GameMain::sce

Cocos2dx 学习笔记整理----第一个项目

接上一节, 进入新建的项目下面的proj.win32下面,找到项目名.sln文件(我的是game001.sln),双击会通过VS2010打开.(当然,你装了VS什么版本就是什么版本) 将你的项目设为启动项目, 切换到解决方案视图, 然后邮件点击解决方案, 选择生成解决方案. 第一次生成根据个人机器性能会消耗大概1-3分钟,呵呵. 但是以后会快很多的. 生成成功的话会在输出窗口显示如下: 一般都会生成成功,但是我生成的时候失败了很多次,后来发现是这个问题:http://www.cnblogs.co

Cocos2dx 学习笔记整理----开发环境搭建

最近在学习cocos2dx,预备将学习过程整理成笔记. 需要的工具和环境整理一下: 使用的版本 cocos2dx目前已经出到了v3.1.1,学习和项目的话还是用2.2.3为宜,毕竟不大想做小白鼠,并且学习了几天之后才发出3.X版本的,版本内容变动比较大. 开发环境 1 jdk 1.6以上 2 python 2.7为宜(创建项目要用的) 3 NDT+Android SDK 4 Cygwin或者MinGW 开发工具 1 Eclipse + CDT + ADT 2 VS2010 3 Sublime T

Cocos2dx 学习笔记整理----在项目中使用图片(初)

cocos2dx有多种使用图片的方法,先来个最简单的:用CCSprite直接使用图片. 首先,进入到之前建立的项目,把你将要使用的图片放入到目录下的Resources文件夹里面.项目中以相对路径使用资源皆是以Resources文件夹为根目录参考的. 然后进入到HelloWorldScene.cpp的init方法的最后面加入以下代码: ? 1 2 3 CCSprite * sprite = CCSprite::create("bl_24.png"); sprite->setPosi

Cocos2dx学习笔记10:cocos2dx序列帧动画(1)

在cocos2dx里是不支持gif动画的,所以我们无法给精灵设置gif格式的图片.但是如果我们想实现动画效果呢?那么我们就要自己通过大量的静态图来组成播放成动画. 在cocos2dx里提供了序列帧动画的概念来实现这个功能,动画由帧组成,每一帧都是一个纹理,我们可以使用一个纹理序列来创建动画. 首先找一张动图的gif图,这里QQ群里最近动图的逗逼图太多,我就随便找了一张,把图片另存到桌面,打开ps软件,把图片拖进去,这样gif图会被拆分许多的图层.我们把图层一个一个图层的保存成png的静态图,命名

cocos2dx 学习笔记

1. 动作类: CAction : CActionInterval(持续性) 和 CActionInstant(瞬时性) 帧动画 CAnimate,  帧动画序列 CAnimation 2. Cocos2dx 中所有对象都创建在堆上,然后通过指针引用: 创建方法: 1) new 对象 -> init方法, 需要使用者进行释放: 2)静态的工厂方法,不需要使用者进行释放: 3. 选择器 selector, 类似于函数指针 shedule_selector(SELECTOR) callfunc_se

Cocos2d-x学习笔记(3)

Cocos2d-x有一个包括全部其它头文件的cocos2d.h,仅仅要在使用时包括这个头文件,就能够使用引擎的全部功能.Cocos2d-x的类都放置于cocos2d的命名空间下,如引擎下的"actions/CCAction.h"中在文件首尾使用NC_CC_BEGIN和NS_CC_END来将全部类型包括在cocos2d命名空间下.在游戏中使用#define USING_NS_CC using namespace cocos2d定义的宏USING_NS_CC来说明命名空间. 1.构造函数与

cocos2dx学习笔记(4)——VS2010中的中文乱码问题

当你想使用中文时,你是否有这样的一个困惑. 把样例中的HelloWorld改成中文的 "你好,世界!". 然后编译运行,发现居然是个乱码!!! 因为cocos2dx中使用的是UTF-8字符集,而VS中确实ANSI. 所以我们需要对其进行字符集转换. 然后纵里寻它求百度,终于找到了解决方案. 一个函数搞定! #include "cocos2d.h" char* toUTF(const char* strGB2312) { int iLen = MultiByteToW