GVKun编程网logo

android – cocos2d-x本地化简化/繁体中文

12

本文将带您了解关于android–cocos2d-x本地化简化/繁体中文的新内容,另外,我们还将为您提供关于关于cocos2dx接Androidsdk的一些坑、androidcocos2d-x放到vs

本文将带您了解关于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本地化简化/繁体中文

android – cocos2d-x本地化简化/繁体中文

我需要分开简体/繁体中文.在iPhone的cocos2d中,我只使用“hans”和“hant”.但在cocos2d-x中,我深入研究了代码,这里是CCApplication的代码:

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.谢谢.

解决方法

你需要在cocos2dx android jni中做一些改变:
在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 随记> 关于cocos2dx接Android sdk的一些坑

关于cocos2dx接Android sdk的一些坑

简单说说UI线程 :在Android中,有个非常重要的家伙非常霸道,那就是UI线程。这霸道之一:不能被阻塞。 之二:系统对每一个组件的调用都从UI线程分发出去。

简单说说openGL线程:但凡cocos2dx 启动的绘制线程都是openGL线程。就这么多


任何SDK界面的调用,必须从UI线程中调用,所以需要放到主线程中。如果我们直接从GL线程中调用,轻则调用不了,重者程序蹦死。

解决办法:

得到主线程的handler,这里简单说一种,就是在onCreate中new一个静态handler。

或者new Handler(Looper.getMainLooper()),且叫mainHandler吧,

启动一个线程,

[java] view plain copy
  1. ThreadsendThread=newThread(newRunnable(){
  2. publicvoidrun(){
  3. mainHandler.post(sendRun);
  4. }
  5. });

[html] copy

android cocos2d-x 放到 vs 项目下,用于拷贝 cocos2s 及 GUILibs 的脚本

android cocos2d-x 放到 vs 项目下,用于拷贝 cocos2s 及 GUILibs 的脚本

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代

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工程和编译

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)方法进行我的应用内结算

android-ndk – 从java(android)调用C(cocos2dx)方法进行我的应用内结算

我正在尝试在我的cocos2dx- android项目中添加应用内结算.我可以通过jni从c类调用 java函数.

这是我通过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.cpp文件,看看cocos2dx如何调用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本地化简化/繁体中文的分享就到这里,谢谢您的阅读,如果想了解更多关于 关于cocos2dx接Android sdk的一些坑、android cocos2d-x 放到 vs 项目下,用于拷贝 cocos2s 及 GUILibs 的脚本、Android cocos2d-x开发(三)之创建Android工程和编译、android-ndk – 从java(android)调用C(cocos2dx)方法进行我的应用内结算的相关信息,可以在本站进行搜索。

本文标签: