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 相关文章推荐
将HTML自动转为JS代码
Jun 26 Javascript
JavaScript 事件的一些重要说明
Oct 25 Javascript
js获取input标签的输入值实现代码
Aug 05 Javascript
js中AppendChild与insertBefore的用法详细解析
Dec 16 Javascript
window.location不跳转的问题解决方法
Apr 17 Javascript
JS动态增加删除UL节点LI及相关内容示例
May 21 Javascript
JavaScript实现表格点击排序的方法
May 11 Javascript
js实现精美的银灰色竖排折叠菜单
May 16 Javascript
使用RequireJS优化JavaScript引用代码的方法
Jul 01 Javascript
基于JavaScript实现文字超出部分隐藏
Feb 29 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
Oct 24 Javascript
Vuex mutitons和actions初使用详解
Mar 04 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
php+oracle 分页类
2006/10/09 PHP
php中mysql模块部分功能的简单封装
2011/09/30 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
javascript生成随机数的方法
2014/05/16 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
JS实现网页标题随机显示名人名言的方法
2015/11/03 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
Vue基本使用之对象提供的属性功能
2019/04/30 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
Vue.js原理分析之nextTick实现详解
2020/09/07 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
win与linux系统中python requests 安装
2016/12/04 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
在交互式环境中执行Python程序过程详解
2019/07/12 Python
jupyter实现重新加载模块
2020/04/16 Python
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
Python里面search()和match()的区别
2016/09/21 面试题
教师自荐信
2013/12/10 职场文书
超市国庆节促销方案
2014/02/20 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
骨干教师申报材料
2014/12/17 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python