quick 关于触摸的问题

以前遇到一个问题就是,如果触摸层不在最后,会导致触摸失效。这是由于下面添加的层挡住了触摸层,而后添加的层会位于上面,默认是不可点击,点击不可穿透的。所以我们必须将触摸层放置到最上面。

Logic.lua


local Logic = class("Logic",function ()
    return display.newLayer()
end )

function Logic:ctor()
    self:addNodeEventListener(cc.NODE_ENTER_FRAME_EVENT, handler(self, self.update))
    self:scheduleUpdate()
end



function Logic:update(dt)
    print("Logic")
end


return Logic

Touch.lua


local Touch = class("Touch",function ()
    return display.newLayer()
end )

function Touch:ctor()

    self:setTouchEnabled(true)
    self:setTouchSwallowEnabled(false)
    self:addNodeEventListener(cc.NODE_TOUCH_EVENT, handler(self, self.touchTouch))
    
    --
    self:addNodeEventListener(cc.NODE_ENTER_FRAME_EVENT, handler(self, self.update))
    self:scheduleUpdate()
end

function Touch:touchTouch( event )

    if( event.name == "began" ) then
        print("began")
        return true
    end
    if( event.name =="moved" ) then
        print("moved")
    end
    if( event.name =="ended" ) then
        print("ended")
    end
end


function Touch:update(dt)
    print("Touch")
end


return Touch

MainScene.lua 可以


local MainScene = class("MainScene", function()
    return display.newScene("MainScene")
end)

function MainScene:ctor()


    local Logic=require("src.app.scenes.Logic")
    local logic=Logic.new()
    self:addChild(logic)

    local Touch=require("src.app.scenes.Touch")
    local touch=Touch.new()
    self:addChild(touch)
end

function MainScene:onEnter()
end

function MainScene:onExit()
end

return MainScene

修改为下面这个不可以。

function MainScene:ctor()

    local Touch=require("src.app.scenes.Touch")
    local touch=Touch.new()
    self:addChild(touch)

    local Logic=require("src.app.scenes.Logic")
    local logic=Logic.new()
    self:addChild(logic)


end

修改为下面这个可以。

function MainScene:ctor()

    local Touch=require("src.app.scenes.Touch")
    local touch=Touch.new()
    self:addChild(touch,10)

    local Logic=require("src.app.scenes.Logic")
    local logic=Logic.new()
    self:addChild(logic)


end
原文地址:https://www.cnblogs.com/yufenghou/p/4565695.html