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 相关文章推荐
获取Javscript执行函数名称的方法
Dec 22 Javascript
js跟随滚动条滚动浮动代码
Dec 31 Javascript
js判断输入是否为正整数、浮点数等数字的函数代码
Nov 17 Javascript
js 函数的副作用分析
Aug 23 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
Nov 08 Javascript
jQuery之字体大小的设置方法
Feb 27 Javascript
jQuery中Ajax的load方法详解
Jan 14 Javascript
JavaScript记录光标在编辑器中位置的实现方法
Apr 22 Javascript
vue.js+boostrap项目实践(案例详解)
Sep 21 Javascript
js实现加载更多功能实例
Oct 27 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
Jun 12 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
Apr 21 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
PHP4实际应用经验篇(9)
2006/10/09 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
js继承的实现代码
2010/08/05 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
IE6、IE7中获取Button元素的值的bug说明
2011/08/28 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
JavaScript隐式类型转换
2016/03/15 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
推荐11个实用Python库
2015/01/23 Python
Python中http请求方法库汇总
2016/01/06 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
python 反编译exe文件为py文件的实例代码
2019/06/27 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
python输入错误后删除的方法
2019/10/12 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
HTML5计时器小例子
2013/10/15 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
国际商务系学生个人的自我评价
2013/11/26 职场文书
护士试用期自我鉴定
2014/02/08 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
计生个人工作总结
2015/02/28 职场文书
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js