cocos2dx 事件处理机制

前端之家收集整理的这篇文章主要介绍了cocos2dx 事件处理机制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
事件处理机制:  1.事件  2.事件源  3.事件处理者


1.事件  (EventTouch 触摸事件  EventMouse  鼠标事件 EventKeyboard 键盘事件  EventAcceleration  加速度事件  EventCustom  自定义事件)
2.事件源  精灵  层  菜单  等节点对象(事件的发出者)
3.事件处理者  (EventListener类) 它的子类有EventTouchOneByOne 单点触摸监听器 EventTouchAllAtOnce 多点触摸监听器  EventListenerKeyboard 键盘事件监听器    EnventListenerMouse  鼠标事件监听器  EventListenerCustom 自定义事件监听器 EventListenerAcceleration 加速器时间监听器




事件分发器 EventDispatcher:  事件和事件监听器之间的一一对应的联系,需要用事件分发器这样的一个类进行管理。他负责将监听器和事件进行绑定或解除绑定(注册和注销)


有两个函数可以用来绑定:
1.addEventListenerWithFixedPriority(Listener,FixedPriority)  通过指定的优先级来来决定响应的优先级别
2.addEventListenerWithGraPHPriority(Listener,GraPHPriority)  通过节点的显示优先级来决定响应的优先级别


注销 removeEventListener(listener)  removeAllEventListener()  removeCustomEventListener(customEventListenerName)


当Node销毁时,监<span style="font-family: Arial,Helvetica,sans-serif;">听器也会销毁掉</span><pre name="code" class="plain">function MainLayer:init()
    --主界面背景
    local bg = ccui.ImageView:create("UI/bg_hud.jpg")
    bg:setAnchorPoint(0.5,0.5)
    bg:setPosition(GameTools.winCenter())
    self:addChild(bg)
    
    local img001 = ccui.ImageView:create("UI/bg_menu.png")
    img001:setAnchorPoint(0,0)
    img001:setPosition(200,200)
    bg:addChild(img001)
    
    self.touchRect_up = cc.rect(0,568,640,568)
    self.touchRect_down = cc.rect(0,568)
    
    local  listenner_up = cc.EventListenerTouchOneByOne:create()
    listenner_up:setSwallowTouches(true)
    
    local  listenner_down = cc.EventListenerTouchOneByOne:create()
    listenner_down:setSwallowTouches(true)
    
    local imageLine = ccui.ImageView:create("UI/white.png")
    imageLine:setScale(640,1)
    imageLine:setAnchorPoint(0.5,0.5)
    imageLine:setPosition(0,568)
    bg:addChild(imageLine)


    ----up
    listenner_up:registerScriptHandler(function(touch,event)
        if not cc.rectContainsPoint(self.touchRect_up,cc.p(touch:getLocation().x,touch:getLocation().y) ) then
            return false
        end
        
        print("up"..touch:getLocation().x,touch:getLocation().y)
        return true
        
    end,cc.Handler.EVENT_TOUCH_BEGAN)
    
    listenner_up:registerScriptHandler(function(touch,event)
        print("up"..touch:getLocation().x,touch:getLocation().y)
    end,cc.Handler.EVENT_TOUCH_MOVED )
    
    listenner_up:registerScriptHandler(function(touch,cc.Handler.EVENT_TOUCH_ENDED )

    local eventDispatcher = img001:getEventDispatcher()  
    eventDispatcher:addEventListenerWithSceneGraPHPriority(listenner_up,img001)
    
    
    ----down
    listenner_down:registerScriptHandler(function(touch,event)
        if not cc.rectContainsPoint(self.touchRect_down,touch:getLocation().y) ) then
            return false
        end

        print("down"..touch:getLocation().x,touch:getLocation().y)
        return true

    end,cc.Handler.EVENT_TOUCH_BEGAN)

    listenner_down:registerScriptHandler(function(touch,event)
        print("down"..touch:getLocation().x,cc.Handler.EVENT_TOUCH_MOVED )

    listenner_down:registerScriptHandler(function(touch,cc.Handler.EVENT_TOUCH_ENDED )


    local eventDispatcher = img001:getEventDispatcher()  
    eventDispatcher:addEventListenerWithSceneGraPHPriority(listenner_down,img001)



end
原文链接:https://www.f2er.com/cocos2dx/339992.html

猜你在找的Cocos2d-x相关文章