cocos2dx+lua实现橡皮擦功能


Posted in Javascript onDecember 20, 2018

游戏中刮刮乐是怎么实现的?做了一个小例子看了一下。

实现原理:随着触摸点的移动,通过setBlendFunc函数设置部分区域的颜色混合(将上层图片透明度为0,底层我们想要的图片就显示出来)

--橡皮擦功能测试
local function initInfo()
 local scene = CCScene:create()
 
 local layer = CCLayer:create()
 scene:addChild(layer)
 --擦除后要显示的图片
 local tupian = CCSprite:create(ROOT_RES .. "set/tip.png")
 tupian:setPosition(ccp(WinSizeWidth / 2, WinSizeHeight / 2))
 layer:addChild(tupian)
 --涂层
 local tu = CCSprite:create(ROOT_RES..'set/user/BG.png')
 tu:setPosition(ccp(WinSizeWidth/2,WinSizeHeight/2))
 --layer:addChild(tu)
 --将图层遍历到texture,再将texture加入当前层
 local ptex = CCRenderTexture:create(1280,720)
 ptex:setPosition(ccp(WinSizeWidth/2,WinSizeHeight/2))
 layer:addChild(ptex)
 ptex:begin()
 tu:visit()
 ptex:endToLua()
 --橡皮擦CCDrawNode
 --point = CCDrawNode:create()
 --point:drawDot(ccp(0,0),10,ccc4f(0,0,0,0))
 local point = CCSprite:create(ROOT_RES..'set/labBtn.png')
 layer:addChild(point)
 --[[local blend = ccBlendFunc()
 blend.src = 0
 blend.dst = 1
 tu:setBlendFunc(blend)--]]
 --local blend = tu:getBlendFunc()
 layer:registerScriptTouchHandler(function (eventType,x,y)
 if eventType == "began" then
  cclog("began")
  return true
 elseif eventType == "moved" then
  cclog("move")
  point:setPosition(x,y)
  local blend = ccBlendFunc()
  blend.src = 1
  blend.dst = 0
  point:setBlendFunc(blend)
  ptex:begin()
  point:visit()
  ptex:endToLua()
 elseif eventType == "ended" then
  cclog("end")
 elseif eventType == "cancelled" then
  
 end
 end,false,-1000,true)
 layer:setTouchEnabled(true)
 return scene
end

function getInfoLayer()
 CCDirector:sharedDirector():replaceScene(initInfo())
end

完成后效果如下:(图片都是游戏中随便找的,有点差强人意)

cocos2dx+lua实现橡皮擦功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
一些常用弹出窗口/拖放/异步文件上传等实用代码
Jan 06 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
Aug 12 Javascript
js控制文本框禁止输入特殊字符详解
Apr 07 Javascript
解决webpack -p压缩打包react报语法错误的方法
Jul 03 Javascript
select标签设置默认选中的选项方法
Mar 02 Javascript
vue实现键盘输入支付密码功能
Aug 18 Javascript
小程序转发探索示例
Feb 19 Javascript
详解VS Code使用之Vue工程配置format代码格式化
Mar 20 Javascript
深入学习JavaScript 高阶函数
Jun 11 Javascript
Vue实现背景更换颜色操作
Jul 17 Javascript
如何用Node.js编写内存效率高的应用程序
Apr 30 Javascript
JavaScript实现队列结构过程
Dec 06 Javascript
element-ui table span-method(行合并)的实现代码
Dec 20 #Javascript
fetch 如何实现请求数据
Dec 20 #Javascript
JS闭包经典实例详解
Dec 20 #Javascript
JS闭包原理与应用经典示例
Dec 20 #Javascript
Mint UI组件库CheckList使用及踩坑总结
Dec 20 #Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
Dec 20 #Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
Dec 20 #Javascript
You might like
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
js 匿名调用实现代码
2009/06/19 Javascript
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
JavaScript 选中文字并响应获取的实现代码
2011/08/28 Javascript
jquery 面包屑导航 具体实现
2013/06/05 Javascript
CheckBoxList多选样式jquery、C#获取选择项
2013/09/06 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
node中的session的具体使用
2018/09/14 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
python 将字符串转换成字典dict
2013/03/24 Python
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
Python学习小技巧总结
2018/06/10 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
python实现IOU计算案例
2020/04/12 Python
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
任意存:BOXFUL
2018/05/21 全球购物
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
档案检查欢迎词
2014/01/13 职场文书
《阳光》教学反思
2014/02/23 职场文书
材料会计岗位职责
2014/03/06 职场文书
校庆活动方案
2014/03/31 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
安全主题班会教案
2015/08/12 职场文书
《落花生》教学反思
2016/02/16 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript