Cocos Creator 游戏开发实战 (24):搭建跨平台的开发环境 2.2.4

阅读数:10 2019 年 12 月 8 日 21:38

Cocos Creator游戏开发实战(24):搭建跨平台的开发环境 2.2.4

(调用原生平台的代码)

内容简介
这是一部系统性、深度和实战性兼顾的 Cocos Creator 游戏开发工具书,内容得到了 Cocos 引擎创始人、Cocos 引擎技术总监、触控科技西南区总经理等多位官方专家的高度评价。作者有 8 年的移动游戏开发经验,对包括 Cocos Creator 在内的各种 Cocos 游戏引擎都有非常深入的研究。
《Cocos Creator 游戏开发实战》基于 Cocos Creator 2.X 版本撰写,不仅详细讲解了 Cocos Creator 引擎的各种功能特性、Cocos Creator 引擎核心模块的工作机制和原理,还详细讲解了基于 Cocos Creator 开发游戏的流程、方法、技巧和优秀实践。不仅适合读者零基础快速入门,还能满足初学者进阶修炼的需求。
全书一共 16 章,分为四大部分:
第一部分准备篇(第 1—2 章)
主要介绍了 Cocos Creator 的功能、特点、适用场景、基本架构、工作流,以及跨平台开发环境的搭建。
第二部分基础篇(第 3—8 章)
对 Cocos Creator 的场景制作、资源管理、脚本编程、UI 系统、动画系统和物理系统等核心模块的功能和原理进行了深入讲解,同时配备了具体应用案例。
第三部分实例篇(第 9—11 章)
讲解了三个游戏案例的开发过程和方法,包括消除类游戏、飞行游戏和棋牌类游戏,旨在让读者深入了解 Cocos Creator 的基础知识在游戏开发中的实际使用,三种游戏分别代表了不同类型,可以让开发者深入了解不同类型游戏的开发思想。
第四部分扩展篇(第 12—16 章)
内容涵盖 Cocos Creator 的扩展插件、SDK、网络,如何使用 Cocos Creator 开发小游戏,以及 Cocos Creator 引擎游戏的算法、设计模式和性能优化等主题。作者简介

Android 平台主要支持的开发语言是 Java,而 iOS 平台主要支持的开发语言是 Objective-C,一般我们开发跨 Android 和 iOS 平台的项目,都是使用 C++,就像 Cocos2D-X 做的那样,然而有些系统的功能只能使用原生语言进行开发,所以需要提供调用原生平台的接口。

Cocos Creator 提供了调用原生平台的接口,首先来看 Android 平台的调用:

复制代码
var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...)

Android 平台通过 callStaticMethod 方法传入类名、方法名、方法签名和参数就可以调用 Java 层的静态方法,获得方法返回值。其中 Java 类名的范例如下:

复制代码
org/cocos2dx/javascript/Test

需要注意的是要用斜线分割。方法签名用来标示具体调用的方法的返回值和参数类型,在 Java 有方法重载的情况下方法签名如下:

复制代码
(I)V

括号内表示参数类型,括号后面的符号表示返回值的类型,参数类型见表 2-1。

表 2-1 参数类型
类型 签名
整型 int I
小数 float F
布尔 boolean Z
字符串 Ljava/lang/String
V

参数类型可以是任意数量,可以支持 JavaScript 的 number、bool 和 string 类型。

需要注意的是,在 Android 应用中,Cocos 引擎的渲染和逻辑都是在 OpenGL 线程中进行的,而 Android 本身的 UI 更新是在 App 的 UI 线程中进行的,所以在脚本中进行的任何刷新 UI 的操作,都需要在 UI 线程中进行。

使用实例如下所示:

复制代码
var result = jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "sum", "(II)I", 1, 1);

在 iOS 和 macOS 平台上,通过 callStaticMethod 方法传入类名、方法名和参数就可以调用 Objective-C 层的静态方法:

复制代码
var o = jsb.reflection.callStaticMethod(className, methodNmae, arg1, arg2, .....)

与 Java 的反射调用不同,Objective-C 层的调用,提供的类名不需要完整的路径,另外,调用 Objective-C 层的静态方法时需要传入完整的方法名,特别是当某个方法带有参数的时候,需要将冒号也带上。

复制代码
callNativeUIWithTitle:andContent:

如果没有参数,那么就不需要加上冒号。使用的实例如下所示。

复制代码
var ret = jsb.reflection.callStaticMethod("NativeOcClass",
"callNativeUIWithTitle:andContent:",
"cocos2d-js",
"Example");

Cocos Creator游戏开发实战(24):搭建跨平台的开发环境 2.2.4

购书地址 https://item.jd.com/12602734.html?dist=jd

评论

发布