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

相关文章推荐

详细讲解如何用Cocos2dx3.0alpha0搭建跨平台项目,并通过cygwin部署android项目,并在eclipse打开。

允许转载,如有转载,请注明出处,谢谢。 准备工作: 1. eclipse + android adt 2.android sdk 3.android ndk 4.cocos2dx3.0 项目 5....

cocos2dx最新2.1.5版本跨平台整合NDK+Xcode,Xcode编写&编译代码,Android导入打包运行

cocos2dx for Android是一个痛,乱象的痛,很简单的一些东西,往往耗费大量的时间,看耐心也看人品。当然也可以说看水平,大拿到什么都知道什么都懂! 其原因就是版本太多,版本改的太多,新版...

cocos2dx跨平台使用自定义字体

环境:cocos2dx 2.2.3、xcode5.1、eclipse

win7+VS2010跨平台cocos2dx游戏开发环境的搭建

关于跨平台开发环境的搭建我就不多说什么了,网上教程一大堆。下面就大概的说一下配置过程中我本人遇到的一些问题以及自己的解决办法吧。。。   最新版本的cocos2d-2.1rc0-x-2.1.2.z...

cocos2dx 跨平台Socket

Sever和Client用的是同一个类,只是使用的函数不同

cocos2dx中IOS/Android跨平台微信登录和分享

现在微信应用太广泛,稍微有点社交属性的都会集成微信登录和分享功能。cocos2dx中要实现跨平台登录和分享,有点麻烦。虽然可以使用ShareSdk/友盟等集成,不过看帮助文档也是分平台去分别集成的。官...
  • pur_e
  • pur_e
  • 2016年01月18日 19:36
  • 12245

不用vs和cygwin!Eclipse+cdt实现cocos2dx跨平台解决方案(Android版)

cocos2d-x因为其良好的跨平台解决方案而受到开发者的追捧。我们公司以前开发ios使用的是cocos2d-iphone,考虑到未来向android的移植,决定尝试使用cocos2d-x。  ...

cocos2d-x学习笔记(二)Eclipse+cdt实现cocos2dx跨平台解决方案(转)

一.环境 1.1Eclipse+CDT 1.2cocos2d-x 1.3android SDK / ADT 1.4android ADK 二、解决方案概述及目标 2...
  • lxd211
  • lxd211
  • 2014年07月17日 13:25
  • 636

cocos2d-x学习笔记(二)Eclipse+cdt实现cocos2dx跨平台解决方案(Android版)

一.环境 1.1Eclipse+CDT 1.2cocos2d-x 1.3android SDK / ADT 1.4android ADK 二、解决方案概述及目标 2.1基于Eclipse的...

【Cocos2d-X(2.x) 游戏开发系列之二】cocos2dx最新2.0.1版本跨平台整合NDK+Xcode,Xcode编写&编译代码,Android导入打包运行即可!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/cocos2dx-v2-0/962.html  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2dx跨平台
举报原因:
原因补充:

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