cocos2dx跨平台

转载 2016年06月01日 22:23:17
AppDelegate 作为跨平台程序入口,在这之上做了另一层的封装,封装了不同平台的不同实现。比如我们通常认为一个程序是由 main 函数开始运行,那我们就去找寻,我们看到了在 proj.linux 目录下存在 main.cpp 文件。在main.cpp 中 CCApplication::sharedApplication()–>run(); 这一句看起,这一句标志着, cocos2d-x 程序正式开始运行,现在定位到 sharedApplication() 方法的实现,在CCAplication类中我们可以看到从 sharedApplication() 方法,在调用 run() 方法,在这之前,我们需要调用到它的构造函数,否则不能运行,这就是为什么在 CCApplication::sharedApplication()–>run(); 之前,我们首先有语句 AppDelegate app; 而创建 AppDelegate 变量的原因是 AppDelegate 是 CCApplication 的子类,在创建子类对象的时候,调用其构造函数的同时,父类构造函数也会执行,然后就将 AppDelegate 的对象赋给了 CCApplication 的静态变量,而在 AppDelegate 之中我们实现了 applicationDidFinishLaunching方法,所以在 CCApplication 中 run 方法的开始处调用的就是 AppDelegate 之中的实现。而我们在此方法中我们初始化了一些变量,创建了第一个 CCScene 场景等,之后的控制权,便全权交给了CCDirector::sharedDirector()–>mainLoop(); 方法了。
 
在cocos2d-x的文件夹下,有一个platform文件夹,里面存放了跨平台的封装接口。当前目录下有CCApplicationProtocol.h头文件,子目录有win32,Android,IOS三个文件夹,里面分别存放跨平台需要的函数,其中包括CCApplication。而AppDelegate 类则是继承自CCApplication。CCApplication又继承自
 
CCApplicationProtocol。在CCApplicationProtocol中定义了applicationDidFinishLaunching虚方法,由CCApplication 继承, AppDelegate 实现的。以此实现了跨平台。
 
java输入→Jni→c++输入→c++处理(API实现)→c++输出→Jni→java输出
 
而在Android 平台启动 cocos2d-x程序。可以找到Android 平台与上面等价的入口点,proj.android/jni/hellocpp/main.cpp。在main.cpp文件里面并没有看到 main 函数,这是由于不同的平台封装所以有着不同的实现,在 Android 平台,默认是使用 Java 开发,可以使用 Java 通过 Jni 调用 C++ 程序,而这里也正式如此。我们暂且只需知道,由 Android 启动一个应用,通过各种峰回路转,最终执行到了 Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit 函数,由此,变开始了我们 cocos2d-x Android 平台的程序入口处。,其它平台程序的入口必然包含着其它平台的不同封装实现 。
 
参考:http://blog.leafsoar.com/archives/2013/05-05.html

【玩转cocos2d-x之四】cocos2d-x怎么实现跨平台

cocos2d-x到底是这样实现跨平台的呢?这里以Win32和Android为例。 1.跨平台项目目录结构 先看一下一个项目创建后的目录结构吧!这还是以HelloCpp为例。   ...
  • jackyvincefu
  • jackyvincefu
  • 2013年10月11日 08:36
  • 12604

cocos2d-x 引擎分析:如何实现跨平台

怎么样使用 Cocos2d-x 快速开发游戏,方法很简单,你可以看看其自带的例程,或者从网上搜索教程,运行起第一个 Scene HelloWorldScene,然后在 HelloWorldScene ...
  • qq563129582
  • qq563129582
  • 2015年01月12日 16:16
  • 3294

cocos2dx 为什么可以跨平台?

这篇文章 并非可以解答这个疑惑 . 只是为了 以后 最近 可以 回答 这个 疑惑.  众所周知, 安卓 是 基于 linux 的, 苹果 是基于 unix . linux 和 unix 都是 基于 ...
  • fuming0210sc
  • fuming0210sc
  • 2014年12月19日 09:50
  • 481

Cocos2d-x是怎样实现跨平台?

AppDelegate 作为跨平台程序入口,在这之上做了另一层的封装,封装了不同平台的不同实现。比如我们通常认为一个程序是由 main 函数开始运行,那我们就去找寻,我们看到了在 proj.linux...
  • zhanghow
  • zhanghow
  • 2016年12月20日 21:00
  • 1056

【备忘】麦可网-Cocos2D-X跨平台游戏开发 完整4G下载

教程目录 1、Cocos2d-X引擎概要01 - Lesson1_游戏原理与机制  02 - Lesson2_游戏开发技术  03 - Lesson3_认识Cocos2D-X引擎  04 - ...
  • luanluanxiyang
  • luanluanxiyang
  • 2017年01月09日 17:41
  • 222

cocos2dx 跨平台游戏开发基础框架以及Demo

基本代码结构 demo下载: http://url.cn/HMddsi 实现的功能: 1.地图 45度菱形tile,8方向A*寻路,分块按需加载地图图片,即时清理图片的内存占用 2.精灵的显...
  • hpking
  • hpking
  • 2013年08月01日 19:05
  • 3033

cocos2d 跨平台原理 以及android.mk编译的入口

在android工程下面jni/hellocpp/main.cpp里面是cocos2d c++的入口。 一路跟踪Cocos2dxActivity.java找到Cocos2dxRenderer...
  • skillart
  • skillart
  • 2017年03月10日 18:34
  • 892

【cocos2d-x入门之四】cocos2d-x怎么实现跨平台

原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12610287 cocos2d-x到底是这样实现跨平台的...
  • fu_zk
  • fu_zk
  • 2013年10月11日 10:38
  • 4296

Cocos2dx 对android支持原理

Cocos2dx 基于opengl es 实现跨平台功能,虽然android 已经支持native ,还是需要使用到android平台中的特性。 首先从程序的主入口 MainActivity...
  • u013479411
  • u013479411
  • 2015年10月16日 10:59
  • 2021

cocos2dx跨平台使用自定义字体

环境:cocos2dx 2.2.3、xcode5.1、eclipse
  • T867797806
  • T867797806
  • 2014年07月17日 21:31
  • 1319
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2dx跨平台
举报原因:
原因补充:

(最多只允许输入30个字)