CocosCreator-IOS 开发篇
生活随笔
收集整理的這篇文章主要介紹了
CocosCreator-IOS 开发篇
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言:
由于官方文檔寫的不夠詳細,我在此在補一篇,希望能幫助大家。
步驟1:
新建一個ts腳本,比如 Native。在腳本中添加如下代碼:
/*** 調用安卓或者IOS方法* @param funcName 需要調用的方法名* @param param 需要傳入的數據* 我的操作是,在OC 代碼里創建一個專門接收腳本調用的函數,然后腳本傳入方法名,和參數(參數為 string類型)*/public callStaticMethod(funcName: string, param: string = "") {if (cc.sys.isNative) {if (cc.sys.os == cc.sys.OS_IOS) {jsb.reflection.callStaticMethod("XXX-OC","xxxFucn:param:",funcName,param);}}}這里的xxxFucn 就代表的是XXX-OC 類里的通用調用函數。OC代碼見后面。做完這一步,你就能調用OC拉~步驟2:
在xcode里新建一個XXXOC.h。并在XXXOC.h里添加一個xxxFucn的靜態函數,代碼如下:
//這里第一個參數對應的就是 ts腳本的funcName, param 對應的就是param + (void) xxxFun:(NSString *)funcName param:(NSString *)param;然后在新建一個XXXOC.m 或者XXXOC.mm, 在類里實現xxxFun,代碼如下:
//js to object-c 接口部分 +(void) xxxFunc:(NSString *)funcName param:(NSString *)param {if(param){if([funcName isEqualToString:@"xxxFunc"]){//這個里面執行oc 代碼里對應的方法即可。}} }OC 寫完了,那么我們如何調用ts 或者js呢?不用捉急,讓我慢慢道來,這時候需要在OC里添加一個
//oc to js - (void) callExternalInterface:(NSString *) param {NSString *ns_script = [NSString stringWithFormat:@"window.onFunc({status:'%@', param:''});", param];std::string script = [ns_script UTF8String];cocos2d::Application::getInstance()->getScheduler()->performFunctionInCocosThread([=](){se::ScriptEngine::getInstance()->evalString(script.c_str());}); }//一定注意到了這個window.onFunc 吧,這個是我們在js或者ts里面建立的一個通用的接收oc回調的函數。 //還有要注意,如果要用到 cocos2d的方法,一定要在oc里添加如下頭文件#include "cocos2d.h" //#include "platform/CCApplication.h" #include <cocos/base/CCScheduler.h> #include "cocos/scripting/js-bindings/jswrapper/SeApi.h" #import "AppDelegate.h"好了即將大功告成了,不要急,不要走開哦,我們還需要在ts里添加一個方法:
// 將監聽原生事件接口綁定到全局window上 (window as any).onFunc = Native.onFunc;//這里的onFunc 就是咱們在OC里面回調的那個。然后接下來在ts里加入處理oc 回調的方法:
/** 監聽原生事件接口 *///這里的msg 可以是任意參數,如果參數類型復雜可以傳入json數據哦public static onFunc(msg: any): void {//然后我們就可以在這里面 更具oc的回調在處理游戲腳本里的任意方法拉~}全部代碼 附件:
CocosCreator-IOS開發篇.zip-其它文檔類資源-CSDN下載
是不是很簡單?
下一期我將介紹與安卓的互調哦~
感謝觀看,如果喜歡請點個關注和贊吧!
總結
以上是生活随笔為你收集整理的CocosCreator-IOS 开发篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Servlet其实是单例多线程
- 下一篇: nodejs变量