Fork me on GitHub

/无间落叶 I am a leaf on the wind ~

实现 Cocos2d-x 全局定时器

| Comments | Cocos2d-x

cocos2d-x 中有自己的定时器实现,一般用法是在场景,层等内部实现,定时器的生命周期随着它们的消亡而消亡,就运行周期而言,相对最长的是场景,如果在多个场景切换并且保持定时器的运行,那我们就需要定义一个自己的 全局定时器

平时所使用的定时器,我们可以直接使用,是因为 CCNode 帮我们实现了定时器的封装,一个简单的做法,是定义个全局的静态 CCNode 对象,在程序运行之初初始化,并执行其定时器任务,而不由任何场景所管理即可实现,但在这里,一叶对定时器的内部实现稍作了解后,封装了自己实现的全局定时解决方案,代码如下(获取源码 ):

Cocos2d-x 程序是如何开始运行与结束的

| Comments | Cocos2d-x

题记:对于技术,我们大可不必挖得那么深,但一定要具备可以挖得很深的能力

问题的由来

怎么样使用 Cocos2d-x 快速开发游戏,方法很简单,你可以看看其自带的例程,或者从网上搜索教程,运行起第一个 Scene HelloWorldScene,然后在 HelloWorldScene 里面写相关逻辑代码,添加我们的层、精灵等 ~ 我们并不一定需要知道 Cocos2d-x 是如何运行或者在各种平台之上运行,也不用知道 Cocos2d-x 的游戏是如何运行起来的,它又是如何渲染界面的 ~~~

我们只用知道 Cocos2d-x 的程序是由 AppDelegate 的方法 applicationDidFinishLaunching 开始,在其中做些必要的初始化,并创建运行第一个 CCScene 即可,正如我们第一次使用各种编程语言写 Hello World! 的程序一样,如 Python 打印:

1
print('Hello World!')

Eclipse Cocos2d-x 开发自动管理

| Comments | Cocos2d-x

Makefile Android.mk 引发的思索

在我们编写 Android 平台 cocos2d-x 游戏的时候,我们除了编写 Classes 之内的源代码文件之外,我们还需要维护其编译文件 Android.mk,如我们在 Classes 添加新的源文件,那么我们就要在 Android.mk 配置添加其编译路径,如:

1
2
3
LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/AppDelegate.cpp \
                   ../../Classes/HelloWorldScene.cpp

每添加一个源文件,我们就要手动添加一个配置,始其能够被编译,同样的,在 proj.linux 的 Makefile 文件也有这样的情况:

1
2
3
OBJECTS = ./main.o \
        ../Classes/AppDelegate.o \
        ../Classes/HelloWorldScene.o

当然让我们手动维护其配置,当然可以,不过麻烦非常,对于像我这样“懒惰”之人,当然需要想办法让其自动管理喽 ~

Eclipse 组织跨平台开发 Cocos2d-x 游戏

| Comments | Cocos2d-x

前面我们完成了,在 Linux 上运行 cocos2d-x 游戏,然后使用 Eclipse 开发 Linux 平台 cocos2d-x 游戏,最后完成了在 Linux 下使用 Eclipse 开发 Android 平台的 cocos2d-x 游戏。

Ecilpse 开发 Linux 平台游戏使用的是 proj.linux 项目,Android 平台的使用的是 proj.android 项目,现在我们将所有项目整合,提供一个 Eclipse 完全开发 cocos2d-x 跨平台游戏的解决方案。我们将以上篇博文所建立的 Android 平台项目 HelloWorld 为基础,整合进 Linux 平台项目,并使用其作为开发调试的主要项目。

Eclipse 组织说明

使用 Eclipse 组织 cocos2d-x 项目,除了 Eclipse 所管理的 proj.linux 项目和 proj.android 项目,我们还需要一个项目,用户管理项目根目录,至于为何如此,后面将会说明,最终项目如下所示:

Linux 下开发 Android Cocos2d-x 游戏

| Comments | Cocos2d-x

开发 Android 应用的首选 IDE 是什么,是 Eclipse ,而开发 Android 平台的 cocos2d-x 游戏呢,当然也是 Eclipse 。

Eclipse Android 开发环境搭建

  • 如果你的 Eclipse 不支持 Java 开发,请安装相关插件,或者使用 Eclipse IDE for Java Developers 版本集成的 Java 开发环境。
  • 仅仅 Java 开发环境还不够,我们还需要 ADT(Android Development Tools) ,顾名思义,通过它,我们才能在 Eclipse 建立 Android 项目,与 Eclipse 集成,打包生成 Android 应用程序包 Apk 文件。
  • 作为 ADT 的依赖环境,Android SDK 也是必须的。
  • 由于 cocos2d-x 是由 C/C++ 编写,为了编译 Android 平台 C/C++ 程序,我们还需要安装 NDK, 注意选择 Linux 版本, 32 位或者 64 位视开发机而定。

善其事先利其器 Eclipse 开发 Cocos2d-x

| Comments | Cocos2d-x

上篇博客,我们实现了在 Linux 下运行 cocos2d-x 游戏,这意味着我们可以在 Linux PC 机上进行游戏的编写、运行和调试,提高开发效率,而在手机上运行的过程大致分为:

  • PC 上编写游戏源代码
  • NDK 编译生成 so 库文件
  • Android 工程打包生成 Apk 文件
  • 传输到模拟器或真机运行

这么个手机上运行的过程繁琐非常,而且这只是运行在 Android 上的过程,如果通过 Android Jni 调用调试 C++ 更为麻烦,现今的 NDK 版本应该支持 Android Jni C++ 程序调试了。而在 PC 端开发运行和调试,偶尔 在手机上运行看看效果的开发过程,更为合适!虽然 cocos2d-x 是跨平台的,但常在目标平台运行,可以提前发现因平台特性可能出现的问题,并即时解决。

Linux 环境 Cocos2d-x开发

| Comments | Cocos2d-x

Cocos2d-x 跨平台特性分析

作为一款跨平台的 2D 游戏引擎 Cocos2d-x ,方便发布到各种移动平台,支持也在不断完善。可以跨平台运行,更据优势的是可以跨平台开发!

作为运行平台来说,目前主要以 iOSAndroid 平台为多,对其它平台也有支持,如 BlackBerry 平台,但基本只要满足前两者,就能达到我们跨平台运行的目的,这是由用户量决定的。

作为开发平台来说,常用的三种 IDE(集成开发环境) 开发方式:

  • Windows 系统下使用 Visual Stuido 开发
  • Mac 系统下使用 Xcode 开发
  • Linux 系统下使用 Eclipse + CDT 开发

用过 Xcode 的人都说 Xcode 好用(ps:我没用过 :P),这是一套完整的开发环境,基于 llvm 的编译器,优秀的架构提供非常完善的工具链,先且不说,还有快速的模拟器,使开发过程流畅, Windows 平台的标准 IDE VS 也是易于使用,有 cocos2d-x 在 VS 中的项目模板,使开发简化了许多,并且直生成 Win32 可执行程序,即时看到运行效果。而使用 Eclipse 在 Linux 上开发 cocos2d-x 的人相对较少。并没有多少体会这样开发有什么优势!