本文将带您了解关于android–cocos2d-x本地化简化/繁体中文的新内容,另外,我们还将为您提供关于关于cocos2dx接Androidsdk的一些坑、androidcocos2d-x放到vs
本文将带您了解关于android – cocos2d-x本地化简化/繁体中文的新内容,另外,我们还将为您提供关于
- android – cocos2d-x本地化简化/繁体中文
关于cocos2dx接Android sdk的一些坑 - android cocos2d-x 放到 vs 项目下,用于拷贝 cocos2s 及 GUILibs 的脚本
- Android cocos2d-x开发(三)之创建Android工程和编译
- android-ndk – 从java(android)调用C(cocos2dx)方法进行我的应用内结算
android – cocos2d-x本地化简化/繁体中文
cclanguageType ret = kLanguageEnglish; if ([languageCode isEqualToString:@"zh"]) { ret = kLanguageChinese; } else if ([languageCode isEqualToString:@"en"]) { ret = kLanguageEnglish; } else if ([languageCode isEqualToString:@"fr"]){ ret = kLanguagefrench; } else if ([languageCode isEqualToString:@"it"]){ ret = kLanguageItalian; } else if ([languageCode isEqualToString:@"de"]){ ret = kLanguageGerman; } else if ([languageCode isEqualToString:@"es"]){ ret = kLanguageSpanish; } else if ([languageCode isEqualToString:@"ru"]){ ret = kLanguageRussian; } return ret;
请注意,只有’zh’表示中文(简体/繁体,也许)
那我怎么能区分他们呢?
编辑:
我使用cocos2d-x并需要使用android.不只是iPhone.米奇的答案仅适用于iPhone.谢谢.
解决方法
在cocos2d-x-2.x.x / cocos2dx / platform / android / java / src / org / cocos2dx / lib / Cocos2dxHelper.java中,
更换
return Locale.getDefault().getLanguage();
同
return Locale.getDefault().toString();
因此,您可以在CCApplication :: getCurrentLanguage()中获取zh_CN,zh_TW,还必须更新CCApplication :: getCurrentLanguage()中的实现(找到cocos2d-x-2.xx / cocos2dx / platform / android / CCApplication.cpp) :
cclanguageType CCApplication::getCurrentLanguage() { std::string languageName = getCurrentLanguageJNI(); if (languageName.find("zh_CN") == 0) { return kLanguageChineseCN; // need define this value by yourself } else if (languageName.find("zh_TW") == 0) { return kLanguageChineseTW; // need define this value by yourself } else if (languangeName.find("en") == 0) { return kLanguageEnglish; } ... return kLanguageEnglish; }
关于cocos2dx接Android sdk的一些坑
简单说说UI线程 :在Android中,有个非常重要的家伙非常霸道,那就是UI线程。这霸道之一:不能被阻塞。 之二:系统对每一个组件的调用都从UI线程分发出去。
简单说说openGL线程:但凡cocos2dx 启动的绘制线程都是openGL线程。就这么多
任何SDK界面的调用,必须从UI线程中调用,所以需要放到主线程中。如果我们直接从GL线程中调用,轻则调用不了,重者程序蹦死。
解决办法:
得到主线程的handler,这里简单说一种,就是在onCreate中new一个静态handler。
或者new Handler(Looper.getMainLooper()),且叫mainHandler吧,
启动一个线程,
- ThreadsendThread=newThread(newRunnable(){
- publicvoidrun(){
- mainHandler.post(sendRun);
- }
- });
android cocos2d-x 放到 vs 项目下,用于拷贝 cocos2s 及 GUILibs 的脚本

echo. echo.
set LOG=InstallWizardLog.txt set Project_DIR=.
set Source_DIR=D:\cocos2dx\cocos2d-2.1rc0-x-2.1.2
set CocoStudioLib_DIR=D:\cocos2dx\templates\
if not exist %Project_DIR%cocos2dx md %Project_DIR%cocos2dx xcopy %Source_DIR%cocos2dx %Project_DIR%cocos2dx /S/E/Y/Q
if not exist %Project_DIR%CocosDenshion md %Project_DIR%CocosDenshion xcopy %Source_DIR%CocosDenshion %Project_DIR%CocosDenshion /S/E/Y/Q
if not exist %Project_DIR%external md %Project_DIR%external xcopy %Source_DIR%external %Project_DIR%external /S/E/Y/Q
if not exist %Project_DIR%extensions md %Project_DIR%extensions xcopy %CocoStudioLib_DIR%extensions %Project_DIR%extensions /S/E/Y/Q
echo 按任意键结束 pause exit
Android cocos2d-x开发(三)之创建Android工程和编译
1、进入cocs2d-x目录,用文本编辑器打开create-android-project.bat将_CYGBIN=设置为cycgwin\bin安装的的绝对路径。
将_ANDROIDTOOLS设置为android sdk 的tools绝对路径
将_NDKROOT设置为android ndk的绝对路径
修改完毕,保存后
双击create-android-project.bat开始工程创建向导
首先是输入包名(建议按照android的命名规则),如com.android.test
然后输入工程名称(注意不要输入已有的文件夹的名字,如果同名,会被覆盖掉的),如testandroid
2、NDK编译源码
a、进入cocos2d-x\testandroid\android目录,右键打开build_native.sh ,需要修改ANDROID_NDK_ROOT 为你的ndk的具体路径
ANDROID_NDK_ROOT=/cygdrive/e/android-ndk-r5
COCOS2DX_ROOT=/cygdrive/d/Work7/cocos2d-x
GAME_ROOT=$COCOS2DX_ROOT/testandroid
GAME_ANDROID_ROOT=$GAME_ROOT/android
RESOURCE_ROOT=$GAME_ROOT/Resource
b、打开cygwin,进入到testandroid/android目录,输入 ./build_native.sh 开始编译
c、编译成功之后,会直接在testandroid\android\libs\armeabi 这个目录底下生成so文件(libgame.so)
3、运行新建好的工程
打开eclipse,选择FILE->New->Android Project,然后选择Create project from existing source
然后选择到目录 \cocos2d-x\testandroid\android 确定。则从文件创建工程成功(会在\testandroid\android\bin这个目录生成相应的apk包)
运行该工程,右键该工程,选择Run as ->android application
android-ndk – 从java(android)调用C(cocos2dx)方法进行我的应用内结算
这是我通过jni调用我的java函数的方式.
JniMethodInfo t; JniHelper::getStaticmethodInfo(t,"com/test/project/Project","BuyProduct","(Ljava/lang/String;)V"); char buffer[20]; sprintf(buffer,"product1"); jstring StringArg1 = t.env->NewStringUTF(buffer); t.env->CallStaticVoidMethod(t.classID,t.methodID,StringArg1);
应用内结算工作正常,但现在我必须给我的c类打电话,告知产品购买是否成功.
我只能通过提到指定的返回类型返回调用方法的结果,但是应用程序内进程是一个异步进程 – 经过大量的方法调用,我的控件不会返回到同一个方法.所以返回一个值是行不通的.
那么有没有其他方法将值(在我的情况下是应用程序内购买的结果)从java函数传递给我的c类???
解决方法
基本上cocos2dxHelper.java中有一个方法只有定义而不是实现,通常它看起来像
public static native blahblah();
并且在cpp文件中有一个相应的函数被调用
Java_org_cocos2dx_cocos2dxHelper_blahblah()
如果你用runOnUIThread()调用Java代码中的blahblah(),那就是c函数
Java_org_cocos2dx_cocos2dxHelper_blahblah()
将被召唤.
顺便说一句,c代码需要在extern C {}中
我们今天的关于android – cocos2d-x本地化简化/繁体中文的分享就到这里,谢谢您的阅读,如果想了解更多关于
本文标签: