[笨木头Cocos2dx045]让输入框在Android上全屏显示

笨木头  2013-11-19 8:40   Cocos2d-x,Cocos2d-x2.0   阅读(15,993)   29条评论

笨木头花心贡献,啥?花心?不呢,是用心~

转载请注明,原文地址:http://www.benmutou.com/archives/746

正文:

 

1. 问题

关于Cocos2d-xAndroid上的输入框,我忍了好久了,一直没去折腾它,觉得无关紧要。(小若:等等,你倒底想说什么?)

我想说的是,默认情况下,我们在Android上打开的输入框是这样的:

(小若:很好啊,完美~

 

才怪啊~!我本来也以为没什么,我以为正常人都会在输入完之后点击那个回车按钮。

结果,我的游戏玩家有很大一部分都会在输入完之后点击返回键~返回键!于是他们就永远都输入不了内容了,于是我就这样失去了一个又一个用户了。

 

2.解决方案

没关系,我可是Android手游出身的,输入框什么的我可是折腾过的(各种炫耀~)。

要解决这个问题,很简单,Cocos2d-x移植到Android时,是有一堆Java文件的(org.cocos2dx.lib记得吧?),我们找到Cocos2dxEditBoxDialog.java文件,接下来,很重要的一步,千万不要做错了:

打、开、它~

 

嗯,然后就没什么重要的了,在181,找到下面这段代码:

this.mInputEditText.setImeOptions(oldImeOptions | EditorInfo.IME_FLAG_NO_EXTRACT_UI);

 

把它改成下面的样子:

this.mInputEditText.setImeOptions(oldImeOptions | EditorInfo.IME_ACTION_GO);

 

3.测试

然后clean一下项目,好让这些Java文件重新编译,最后,再次运行游戏,打开输入框,效果如下:

 

这才是我想要的,我想,这样的话,正常人在输入完内容之后都会点【完成】按钮了吧?

虽然这么做会让输入框变成全屏,用策划的思维来考虑的话,就是“让玩家的视觉完全脱离了游戏”,这是全屏的弊端。

 

不过,自己做取舍吧,反正我会选择全屏。因为,曾经有玩家因为输入不了内容而给了我游戏一个差评~!

29 评论

  1. 有一个问题欸 如果是用的textfield的话 不改那句话 就是弹出的第二种,但是第二种的bug 太多 我需要用回第一种 要怎么改

      1. 看了木头大神的文章,感觉需要学得东西还很多啊,手机端的似乎给textfield控制的东西一点也不多,关于Editbox的就先对很多。那麻烦了哟,我再去研究研究

  2. 请问怎么创建动画的plist文件,就是用3.0去支持plist创建动画,我买了书,书上的array已经不能用了,单独创建帧的,可以实现,就是搞不懂plist文件的,求救!!!!!

    1. 不是很明白你的意思,我猜你是问CCArray::createWithContentsOfFile在3.0里的替代方式吧?你可以用FileUtils::getInstance()->getValueVectorFromFile,具体你可以看看官方Demo关于这个函数的使用(或者看看API)也可以尝试用Cocostudio的动画编辑器~

  3. 对啊,那回车符怎么办,我也是搜狗输入法……不能输入回车符的话,聊天信息不就全都一段上了么……打算统一用GO字样,这样会有转到字样,这都不按我就没有办法了说……

    1. 那倒不知道,手游聊天也要回车符?一般都是一连串的输的吧,又不是写文章 不呢,有不少玩家是习惯了输入完之后直接按手机返回键的(特别是在创建角色,输入名字的时候),所以,嘿嘿

  4. 测试了下,1,2,3都是回车符号4是搜索字样5是转到字样目测用转到字样会比较好,最清晰,可是回车去哪了,晕死……木有ios测试啊……

  5. 话说现在回车键变成了确认,那么怎么输入回车啊?type = type + 1; if (type > 5) then type = 1; end if (type == 1) then edit:setReturnType(kKeyboardReturnTypeDefault); elseif (type == 2) then edit:setReturnType(kKeyboardReturnTypeDone); elseif (type == 3) then edit:setReturnType(kKeyboardReturnTypeSend); elseif (type == 4) then edit:setReturnType(kKeyboardReturnTypeSearch); elseif (type == 5) then edit:setReturnType(kKeyboardReturnTypeGo); end完全感受不了作用怎么破……

  6. 对了,还有些输入法有时候会识别不了,没有回车键的……我玩卧龙传说的时候,我宿友的百度输入法就是这样子了,然后他被逼着换了输入法……

  7. 嘿嘿,今天要用你这玩意了……突然发现,每次都要在移植之后才能搞,这不是很要命么……而且,在ios里面怎么破啊……好吧,先搞来试试,然后就要做聊天框了……貌似换行要自己写吧……

发表评论

电子邮件地址不会被公开。 必填项已用*标注