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