因项目需求,cocos2d 3.10以下版本中的 editbox 都是使用 ttf 来显示 文字的,使用 ttf 显示的话 很多原生的功能 其实都不好做。比如说 表情,复制,粘贴。(光标其实还容易 可以自己弄个 action) ,目前的很多游戏 聊天系统(其实现在很多的第三方聊天sdk) 或者 输入框系列 体验都很好的。为了追求品质 提高体验做的人性化。然后 又不能 直接 从2.x 直接升级到 3.12 版本(虽然可以升级,但考虑到成本问题而没有升),所以,只升了部分功能~ 好了 说了比较 也说了原因,下面就看看升级的步骤吧。
要升级 分二部分:引擎代码c++ 和 java 代码
一、c++ 引擎部分
想要升级 引擎,就得 看懂 当前版本的 和 你所要升级版本的框架逻辑,先来看 2.x版本的引擎目录部分,如下图:
图 1
CCEditBox 里面的实现 这里不多说了,我们只要知道 editBox 是分平台的,在 create 方法里面 初始化了 平台的实现 m_pEditBoxImpl 这个变量里面的其实就是 对应的平台。
图 2
这里 自己 初始化自己的,互不干扰 ,普通的 editBox 是一个 CCControlButton 在CCControlButton 上面 addChild 了 CCLabelTTF ,但我们点击的时候,调用 openKeyboard 方法调用 JNI( showEditTextDialogJNI)
如图:
图 3