BackLayer=class("BackLayer",function()
return cc.Layer:create()
end)
BackLayer.ctor=function(self)
local size=cc.Director:getInstance():getWinSize()
self.size=size
local sprite=cc.Sprite:create("clipguide/HelloWorld.png")
sprite:setPosition(size.width/2,size.height/2)
self:addChild(sprite)
--添加ClippingNode遮罩
local clip=require("sprite.clipping.guide.ClipGuide")
self.clip=clip.create()
self:addChild(self.clip)
--添加提示标志
self.tip=self:guideSprite()
self:addChild(self.tip)
--添加监听事件
self:event()
end
BackLayer.guideSprite=function(self)
--提示标志
local guide=cc.Sprite:create()
guide:setTexture("clipguide/tip.png")
guide:setPosition(self.size.width/2-55,self.size.height/2+40)
guide:setScale(0.4)
guide:setRotation(60)
--提示标志动作
local scale1=cc.ScaleBy:create(0.25,0.95)
local scale2=cc.ScaleTo:create(0.25,0.4)
local action=cc.Sequence:create(scale1,scale2)
guide:runAction(cc.RepeatForever:create(action))
return guide
end
BackLayer.event=function(self)
local function onTouchBegin(touch,event)
return true
end
local function onTouchMoved(touch,event)
end
local function onTouchEnded(touch,event)
local location=touch:getLocationInView() -- touch in screen
local glPoint=cc.Director:getInstance():convertToGL(location)
if self.clip and self.tip then
local rect=self.clip:getStencilRect()
if cc.rectContainsPoint(rect,glPoint) then
self:removeChild(self.clip,true)
self:removeChild(self.tip,true)
self.clip,self.tip=nil,nil
end
end
end
local listener=cc.EventListenerTouchOneByOne:create()
listener:registerScriptHandler(onTouchBegin,cc.Handler.EVENT_TOUCH_BEGAN)
listener:registerScriptHandler(onTouchMoved,cc.Handler.EVENT_TOUCH_MOVED)
listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED)
local dispacher=cc.Director:getInstance():getEventDispatcher()
dispacher:addEventListenerWithSceneGraphPriority(listener,self)
end
BackLayer.create=function()
local layer=BackLayer.new()
return layer
end
return BackLayer