IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> cocos creator刷新原生端输入框的文本 -> 正文阅读

[游戏开发]cocos creator刷新原生端输入框的文本

cocos creator修改原生端输入框的文本

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


修改引擎文件

  • resources\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxEditBox.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);
               }
           });
       }
   }
   ...
}
  • resources\cocos2d-x\cocos\scripting\js-bindings\manual\jsb_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\.editors\Creator\2.4.3\resources\cocos2d-x\cocos\ui\edit-box\EditBox.h
    添加updateText声明,防止在jsb_global.cpp中报错
public:
	...
	static void updateText(std::string text);
	...
  • resources\.editors\Creator\2.4.3\resources\cocos2d-x\cocos\ui\edit-box\EditBox-android.cpp
    实现editbox的updateText方法,该方法调用Cocos2dxEditBox.java中的静态方法updateText
...
void EditBox::updateText(std::string text)
{
    JniHelper::callStaticVoidMethod(JCLS_EDITBOX, "updateText", text);
}
...

resources\engine\cocos2d\core\components\editbox\CCEditBox.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);
    },
    ...
 })
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-11-25 08:26:52  更:2021-11-25 08:28:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 23:40:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码