-- 弹出框基类
local PopUpBase = class("PopUpBase", function ()
return display.newLayer()
end)
--[[swallowTouches 是否能击穿]]
function PopUpBase:ctor(swallowTouches)
if not swallowTouches then
self.swallowTouches = false
else
self.swallowTouches = swallowTouches
end
self.clickCallBack = nil
self:enableNodeEvents()
self.node_bg = nil
self.isTouched = nil
self.isCanClick = true
self.delayAction = nil
local listener = cc.EventListenerTouchOneByOne:create()
listener:setSwallowTouches(true)
listener:registerScriptHandler(handler(self, self.onTouchBegan), cc.Handler.EVENT_TOUCH_BEGAN)
listener:registerScriptHandler(handler(self, self.onTouchEnded), cc.Handler.EVENT_TOUCH_ENDED)
local eventDispatcher = self:getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(listener, self)
end
function PopUpBase:onTouchBegan(touch, event)
if self.node_bg then
local touchLocation = touch:getLocation()
local locationInNode = self.node_bg:convertToNodeSpace(touchLocation)
local s = self.node_bg:getContentSize()
local rect = cc.rect(0, 0, s.width, s.height)
self:onTouchBeganHandle(cc.rectContainsPoint(rect, locationInNode),touch)
return true
elseif self.swallowTouches == true then
self:onTouchBeganHandle(true,touch)
return true
else
return false
end
end
function PopUpBase:onTouchEnded(touch, event)
if self.node_bg then
local touchLocation = touch:getLocation()
local locationInNode = self.node_bg:convertToNodeSpace(touchLocation)
local s = self.node_bg:getContentSize()
local rect = cc.rect(0, 0, s.width, s.height)
self:onTouchEndedHandle(cc.rectContainsPoint(rect, locationInNode),locationInNode)
return true
elseif self.swallowTouches == true then
self:onTouchEndedHandle(true,locationInNode)
return true
else
return false
end
end
function PopUpBase:onTouchBeganHandle(value,touch)
self.isTouched = value
end
function PopUpBase:onTouchEndedHandle(value,locationInNode)
if self.isTouched == value and value == false then
self:onClose()
end
end
function PopUpBase:onClose()
MJ.remove(self)
end
function PopUpBase:setClickHandle(value)
self.clickCallBack = value
end
function PopUpBase:onClickHandle(...)
if self.clickCallBack then
self.clickCallBack(...)
end
end
function PopUpBase:setIsCanClick(value)
self.isCanClick = value
if self.delayAction then
self:stopAction(self.delayAction)
self.delayAction = nil
end
if self.isCanClick == false then
self.delayAction = setTimeOut(self,function()
self.isCanClick = true
end,nil,10)
end
end
function PopUpBase:getIsCanClick()
return self.isCanClick
end
function PopUpBase:onExit()
end
return PopUpBase