cocos2d-lua3.7控件篇(一)-EditBox
一、查看EditBox的C++代码
3.7之前版本的uiinput已经没有了,新版本采用的ccui.EditeBox ,通过添加回调函数的方式实现监听。
我们打开UIEditBox.h查看可以使用的方法。
它为我们提供了两个构造函数:
* create a edit box with size.
* @return An autorelease pointer of EditBox, you don't need to release it only if you retain it again.
*/
static EditBox* create(const Size& size,
Scale9Sprite* normalSprite,
Scale9Sprite* pressedSprite = nullptr,
Scale9Sprite* disabledSprite = nullptr);
/**
* create a edit box with size.
* @return An autorelease pointer of EditBox, you don't need to release it only if you retain it again.
*/
static EditBox* create(const Size& size,
const std::string& pNormal9SpriteBg,
TextureResType texType = TextureResType::LOCAL);
二、分析EditBox基本实现
如果仔细分析可以看到,各个平台都实现了自己的editBox,他们都继承并且实现了UIEditBoxImpl
三、使用EditBox
我们如何使用呢?首先自己找个loading-bg.png图片,然后
如下代码
local editbox = ccui.EditBox:create(cc.size(200,40),"loading-bg.png",ccui.TextureResType.localType)
editbox:setPosition(100,100)
self:addChild(editbox)
local function editboxEventHandler(eventType)
print(eventType)
if eventType == "began" then
-- triggered when an edit box gains focus after keyboard is shown
elseif eventType == "ended" then
-- triggered when an edit box loses focus after keyboard is hidden.
elseif eventType == "changed" then
-- triggered when the edit box text was changed.
elseif eventType == "return" then
-- triggered when the return button was pressed or the outside area of keyboard was touched.
end
end
editbox:registerScriptEditBoxHandler(editboxEventHandler)
通过控制台我们就可以查看到了。