cocos2d-x lua注册事件函数

cocos2d-x技术群新群:117871561
c++技术交流群:593010226

版本 3.1.1

registerScriptTouchHandler             --注册触屏事件
registerScriptTapHandler                  --注册点击事件
registerScriptHandler                        -- 注册基本事件 包括 触屏 层的进入 退出 事件
registerScriptKeypadHandler           --注册键盘事件
--registerScriptAccelerateHandler     注册加速事件   此事件用法待更新

1.registerScriptTouchHandler 注册触屏事件

--注册
self.spTrusteeCover = cc.Layer:create():setVisible(false):addTo(self, 4)
self.spTrusteeCover:setTouchEnabled(true)   self.spTrusteeCover:registerScriptTouchHandler(function(eventType, x, y)
return self:onTrusteeTouchCallback(eventType, x, y)
end)

--回调函数
function GameViewLayer:onTrusteeTouchCallback(event, x, y)
    local rect = self.spTrusteeCover:getChildByTag(GameViewLayer.SP_TRUSTEEBG):getBoundingBox()
    if cc.rectContainsPoint(rect, cc.p(x, y)) then
        return true
    else
        return false
    end
end

2,registerScriptTapHandler 很少用 , 注册点击事件

--给一张图添加点击事件
function GameViewLayer:set()
  local im_btn = cc.ImageView:create()
  :setPosition(100,100)
  local function btnCallBack()
        print("registerScriptTapHandler") 
end
im_btn:registerScriptTapHandler(btnCallBack)
end

3,registerScriptHandler 平时项目中用的最多,前面有写此注册事件的用法,这里在简单写一下 注册基本事件 包括 触屏 层的进入 退出 事件

function GameViewLayer:registLayerListener()  
    --创建一个单点触屏事件  
    local listener = cc.EventListenerTouchOneByOne:create()  
    --注册触屏开始事件  
    listener:registerScriptHandler(onTouchBegan, cc.Handler.EVENT_TOUCH_BEGAN)  
    --注册触屏移动事件  
    listener:registerScriptHandler(onTouchMoved, cc.Handler.EVENT_TOUCH_MOVED)  
    --注册触屏结束事件  
    listener:registerScriptHandler(onTouchEnded, cc.Handler.EVENT_TOUCH_ENDED)  
    --获取层的事件派发器  
    local eventDispatcher = config.bottomLayer:getEventDispatcher()  
    --事件派发器 注册一个node事件  
    eventDispatcher:addEventListenerWithSceneGraphPriority(listener, config.bottomLayer)  
end  
--onTouchBegan,onTouchMoved,onTouchEnded分别为触摸开始,移动,结束回调处理方法

4,registerScriptKeypadHandler --注册键盘事件

function GameViewLayer:KeyboardEvent()  
    local function keyboardPressed(keyCode, event)  
        if keyCode == 23 then  
            log("left")  
        elseif keyCode == 24 then  
            log("right")  
        elseif keyCode == 25 then  
            log("up")  
        elseif keyCode == 26 then  
            log("down")  
        end  
    end  
    local listener = cc.EventListenerKeyboard:create()  
    listener:registerScriptHandler(keyboardPressed, cc.Handler.EVENT_KEYBOARD_PRESSED)  
    listener:registerScriptHandler(keyboardReleased, cc.Handler.EVENT_KEYBOARD_RELEASED)  
    local eventDispatcher = config.bottomLayer:getEventDispatcher()  
    eventDispatcher:addEventListenerWithSceneGraphPriority(listener, config.bottomLayer)  
end  

这几个注册事件方法 可以根据情况选择使用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • 一 对象的概念 “面向对象编程”(Object Oriented Programming,缩写为OOP)是目前主流...
    奶油小生Cc阅读 373评论 0 0
  • 变革有变革的痛苦,快乐有快乐的代价。 ——白岩松 自己的现状,一...
    王大可小妞阅读 165评论 0 0
  • 再见,加州!再见Alice! 跨国飞机腾云直上,我拿着Alice临别前递给我的写着她的中国126邮箱地址的便签纸,...
    周周writing阅读 267评论 1 4