栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

cocos creator刷新原生端输入框的文本

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

cocos creator刷新原生端输入框的文本

cocos creator修改原生端输入框的文本
    • 修改引擎文件
    • build文件中

因为一些特殊需求需要限制原生的输入框的文本,所以去对引擎的一些文件进行修改;
当前只是对输入框进行赋值刷新,可以根据类似的写法增加其他逻辑;


修改引擎文件
  • resourcescocos2d-xcocosplatformandroidjavasrcorgcocos2dxlibCocos2dxEditBox.java
    添加静态方法updateText,调用setTextKeepState,保持光标位置不变
public class Cocos2dxEditBox {
	...
   private static void updateText(String text){
       if (null != Cocos2dxEditBox.sThis) {
           Cocos2dxEditBox.sThis.mActivity.runOnUiThread(new Runnable() {
               @Override
               public void run() {
                   Cocos2dxEditBox.sThis.mEditText.setTextKeepState(text);
               }
           });
       }
   }
   ...
}
  • resourcescocos2d-xcocosscriptingjs-bindingsmanualjsb_global.cpp
  1. 注册方法updateText
bool jsb_register_global_variables(se::Object* global)
{
	...
	__jsbObj->defineFunction("updateText", _SE(JSB_updateText));
	...
}
  1. 添加JSB_updateText方法实现
...
static bool JSB_updateText(se::State& s)
{
    EditBox::updateText(s.args[0].toString());
    return true;
}
SE_BIND_FUNC(JSB_updateText);
...
  • resources.editorsCreator2.4.3resourcescocos2d-xcocosuiedit-boxEditBox.h
    添加updateText声明,防止在jsb_global.cpp中报错
public:
	...
	static void updateText(std::string text);
	...
  • resources.editorsCreator2.4.3resourcescocos2d-xcocosuiedit-boxEditBox-android.cpp
    实现editbox的updateText方法,该方法调用Cocos2dxEditBox.java中的静态方法updateText
...
void EditBox::updateText(std::string text)
{
    JniHelper::callStaticVoidMethod(JCLS_EDITBOX, "updateText", text);
}
...

resourcesenginecocos2dcorecomponentseditboxCCEditBox.js
添加方法updateNativeText,以便在项目开发中可以通过editbox组件调用该方法

let EditBox = cc.Class({
	...
    updateNativeText(text){
        if (this._impl) {
            this._impl.updateText(text);
        }
    }
    ...
})

可以在creator.d.ts中添加方法声明

export class EditBox extends Component {
	...	
	updateNativeText(text:string): void;
	...
}

build文件中
  • /jsb-link/jsb-adapter/jsb-builtin.js
    添加方法updateText,该方法调用在源生端jsb_global.cpp中注册的JSB_updateText方法
jsb.inputBox = {
	...
 	updateText: function updateText(text){
   		jsb.updateText(text);
 	}
}

  • /jsb-link/jsb-adapter/jsb-engine.js
    JsbEditBoxImpl注册方法updateText,该方法调用之前在jsb-builtin中添加在jsb.inputBox中的updateBox
 Object.assign(JsbEditBoxImpl.prototype,{
 	...
 	updateText(text){
      jsb.inputBox.updateText(text);
    },
    ...
 })
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/591251.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号