cocos2dxjava
㈠ cocos2dx java鍥炶皟C++鎵句笉鍒版柟娉曪紝奼傚ぇ紲炴寚鏁
JAVA璋冪敤C++渚嬪瓙.
1 extern "C" {
2 #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
3 void Java_org_cocos2dx_cpp_JniTestHelper_KuNiuLogin(JNIEnv *env, jobject thiz, jstring jstr)
4 {
5 auto strOpenId = env->GetStringUTFChars(jstr, NULL);
6 env->ReleaseStringUTFChars(jstr, strOpenId);
7 }
8 #endif
9 }
娉ㄦ剰榪欎釜鍑芥暟鐨勫懡鍚.
銆銆Java 鍓嶇紑.
銆銆org_cocos2dx_cpp 鍖呭悕.
銆銆JniTestHelper 綾誨悕.
銆銆KuNiuLogin 鍑芥暟鍚.
鍙傛暟:
銆銆鍓嶄袱涓鍙傛暟鏄蹇呴』鐨, 鍏蜂綋鐢ㄥ刧oogle鏈..
銆銆鍚庨潰鐨勫弬鏁板~鑷宸遍渶瑕佺殑, 娉ㄦ剰綾誨瀷.
銆銆鍦ㄥ嚱鏁板唴閮ㄨ幏鍙栧弬鏁扮殑鏃跺, 瑕侀氳繃浠ヤ笂鏂規硶鑾峰彇.
JAVA鍙瑕佸緩涓涓綾, 鍛藉悕涓 JniTestHelper,
瀹氫箟鍑芥暟 KuNiuLogin, 榪欎釜鍑芥暟蹇呴』鎸夌収NDK鐨勭害瀹氬畾涔.
public static native void KuNiuLogin(String openId);
銆銆native 鍓嶇紑蹇呴』瑕佸姞, 榪欎釜鍑芥暟鍦↗AVA涓鏃犻渶瀹炵幇, 鑷鍔ㄦ槧灝凜++鍑芥暟.
浣跨敤鐨勬椂鍊欑洿鎺 JniTestHelper.KuNiuLogin(""); 灝卞彲浠ヤ簡.
㈡ 如何在Android平台上使用JS直接調用Java方法
在Cocos2d-js 3.0beta中加入了一個新特性,在Android平台上我們可以通過反射直接在js中調用java的靜態方法。它的使用方法很簡單:
var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...)
在callStaticMethod方法中,我們通過傳入Java的類名,方法名,方法簽名,參數就可以直接調用Java的靜態方法,並且可以獲得Java方法的返回值。下面介紹的類名和方法簽名可能會有一點奇怪,但是Java的規范就是如此的。
類名
參數中的類名必須是包含Java包路徑的完整類名,例如我們在org.cocos2dx.javascript這個包下面寫了一個Test類:
package org.cocos2dx.javascript;
public class Test {
public static void hello(String msg){
System.out.println(msg);
}
public static int sum(int a, int b){
return a + b;
}
public static int sum(int a){
return a + 2;
}
}
那麼這個Test類的完整類名應該是org/cocos2dx/javascript/Test,注意這里必須是斜線/,而不是在Java代碼中我們習慣的點。
方法名
方法名很簡單,就是方法本來的名字,例如sum方法的名字就是sum。
方法簽名
方法簽名稍微有一點復雜,最簡單的方法簽名是()V,它表示一個沒有參數沒有返回值的方法。其他一些例子:
(I)V表示參數為一個int,沒有返回值的方法;
(I)I表示參數為一個int,返回值為int的方法;
(IF)Z表示參數為一個int和一個float,返回值為boolean的方法;
現在有一些理解了吧,括弧內的符號表示參數類型,括弧後面的符號表示返回值類型。因為Java是允許函數重載的,可以有多個方法名相同但是參數返回值不同的方法,方法簽名正是用來幫助區分這些相同名字的方法的。
㈢ 如何在win7上搭建Android cocos2d-x-3.3開發環境
android平台工程創建
1、android SDK+NDK安裝
1)、安裝java jdk(如果已經安裝了,可以不用此步驟)
進入:http://www.oracle.com/technetwork/java/javase/downloads/index.html或者直接點擊下載。如下圖
(7)安裝完成後,點擊Yes按鈕,重啟Eclipse。
選擇android SDK解壓後的目錄(ADT 18 默認會掃描電腦,找到並配置好SDK位置)。
配置cygwin
在命令行中進入cygwin目錄,並執行cygwin.bat,如果不是用Administrator賬號登錄的系統,那麼會在cygwinhome文件夾中生成一個以登錄名命名的新的文件夾。
修改新生成文件夾中的「.bash_profile 」文件,用UE或editplus等文本編輯器打開,在最後增加: (e/android-ndk-r8-windows/android-ndk-r8是安裝ndk的路徑)
NDK_ROOT=/cygdrive/e/android-ndk-r8-windows/android-ndk-r8
export NDK_ROOT
然後保存關閉。
至此便基本搭建完畢cocos2d-x的windows 7 android 環境
㈣ cocos2dx 3.16怎麼編譯
先給自己科普一下, android sdk 是給java開發者用的, 咱C++開發者用的是android ndk, 所以就是使用ndk來編譯cocos2dx程序了
使用命令行創建一個項目, 我這里創建的是一個lua項目:cocos new lua_proj2 -p com.company_name.program_name -l lua -d d:\xxx\xxx
此時創建了一個DEMO程序, 此時就可以使用cocos命令生成一個apk包, 進入到目錄lua_proj2\frameworks\runtime-src下面, 在此目錄下面執行命令cocos compile -p android 就會生成一個apk包, 把這個拖到genymotion上面, 就安裝跑起來了.
上面說的是不使用eclipse的方式來生成一個apk包, 下面記錄一下在eclipse中載入lua_proj2這個項目, 並生成apk包的過程. 為什麼一定要將cocos2dx項目導入到eclipse中來生成apk包呢, 因為在eclipse中可以連接AVD來調試android程序, 再者, eclipse可以運行在linux環境下面, 後面我打算在linux進行開發, 所以這一步是一定要跨出去的
打開eclipse, 載入lua_proj2項目, 在此注意一下, 不需要載入libcocos2dx這個項目, 只要載入lua_proj2這個自己新建一項目即可
在eclipse中右擊lua_proj2 -> Properties. 出現Properties for lua_proj2框框
創建一個新的builder
第一個紅框是builder名稱, 隨便填寫, 第二個紅框框是NDK生成工具, 即, 使用此工具來編譯C++項目, 第三個紅框框是工作目錄, 此處我使用lua_proj2項目目錄作為工作目錄, 切換到Environment選項卡, 新建一個在此生成器中使用的環境變數NDK_MODULE_PATH, 值是......\lua_proj2\frameworks\cocos2d-x\cocos;......\lua_proj2\frameworks\cocos2d-x;......\lua_proj2\frameworks\cocos2d-x\external, 前面的.......是絕對目錄的省略, 這里要輸入絕對路徑名稱, 在此我就不寫絕對路徑了.
一路OK下去, 到下面這個畫面
這個就新建立的builder, Project->Build Project
出現大量的error: 'override' does not name a type錯誤, 這是由於NDK的版本太低了, override是C++11中才有的關鍵字, 而到NDKr10才支持C++11, 所以要升級NDK. 到官網去下載吧
不大, 400多M的樣子, 更新完成之後, 看一下ndk\toolchains目錄下面的編譯器, 我的目錄是下面這樣子的
我很想使用clang來編譯, 但是現階段我還不會配置, 就用GCC吧, x86-4.6 & x86-4.8兩個版本的GCC, 4.8的支持C++11
在Application.mk中添加一句NDK_TOOLCHAIN_VERSION = 4.8 就是指定使用GCC4.8來編譯cocos2dx項目, 跑起來了, 下面是eclipse跑起來的console輸出
跟命令行下執行cocos compile -p android 跑出來的是一樣的, 都是在編譯程序. 下面進入到在eclipse下面調試程序
㈤ 請問java轉cocos2dx游戲開發的難度、學習曲線
風險肯定是有的~轉過來又倆問題,一個是沒做過游戲~整個游戲邏輯可能有問題~另一個是c++不熟悉,工程項目稍微大一點的話怕內存泄露~cocos2d-x肯定是用來做手機游戲的~萬一有泄露可能整個程序直接崩了~主要怕這個