参考文章:http://zengrong.net/post/2067.htm点击打开链接
1.准备资源
背景图 background.jpg
遮盖图 HelloWorld.png
橡皮檫图片 test1.png 中间透明的图。 BlendFunc为 cc.blendFunc(GL_ZERO, GL_SRC_ALPHA)
如果是实心外透明 BlendFunc为 cc.blendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA)
这里最主要还是对glBlendFunc的知识的运用,如果不想知道原理可以无视。
2. code
local background = cc.Sprite:create("background.jpg")
:pos(display.cx,display.cy)
:addTo(self)
background:scale(display.height / background:getContentSize().height)
local dirt = cc.Sprite:create("HelloWorld.png")
:pos(display.cx,display.cy)
dirt:scale(display.width / dirt:getContentSize().width)
dirt:retain();
local eraser = cc.Sprite:create("test1.png")
:pos(display.cx, display.cy)
:scale(10)
eraser:retain()
eraser:setBlendFunc(cc.blendFunc(GL_ZERO, GL_SRC_ALPHA));
local renderTexture = cc.RenderTexture:create(display.width,display.height)
:pos(display.cx,display.cy)
:addTo(self)
renderTexture:begin();
dirt:visit();
renderTexture:endToLua(); --todo
self:onTouch(function(event)
eraser:pos(event.x, event.y)
renderTexture:begin();
-- dirt:visit(); --电筒效果
eraser:visit();
renderTexture:endToLua(); --todo
return true;
end):enableTouch(true)
4.效果图 橡皮檫 注释onTouch 里的dirt:visit