博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cocos Creator 橡皮差(刮刮卡)功能(转)
阅读量:6462 次
发布时间:2019-06-23

本文共 2797 字,大约阅读时间需要 9 分钟。

实现一个刮刮卡的效果,于是在论坛里搜集了一些资料并且看了一下CCMask的源码,做出来一套可用的教程,分享给大家。(WEBGL和Native端测试可用)

maskNode是详细设置如下

我们在 scratchCardCtr上挂载了一个脚本 scratchCardNodeCtrl 

直接上这个脚本的代码吧

cc.Class({    extends: cc.Component,    properties: {        rsultLabel:cc.Label,        mask:cc.Mask,        promptLabel:cc.Label,    },    // use this for initialization    onLoad: function (){        this.node.on(cc.Node.EventType.TOUCH_START, this._onTouchBegin, this);        this.node.on(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this);        this.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnd, this);        this.node.on(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancel, this);    },    onDestroy:function () {        this.node.off(cc.Node.EventType.TOUCH_START, this._onTouchBegin, this);        this.node.off(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this);        this.node.off(cc.Node.EventType.TOUCH_END, this._onTouchEnd, this);        this.node.off(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancel, this);    },    start:function () {       //        // var x =-100;        // var y =-100;        // var width =300;        // var height = 200;        // var rectangle = [cc.v2(x, y),        //     cc.v2(x + width, y),        //     cc.v2(x + width, y + height),        //     cc.v2(x, y + height)];        //        // stencil.drawPoly(rectangle, color, 0, color);        // stencil.drawPoly(this.mask._calculateCircle(cc.p(0,0),cc.p(100,100), 64), color, 0, color);        //        // stencil.drawPoly(this.mask._calculateCircle(cc.p(200,200),cc.p(50,50), 64), color, 0, color);    },    _onTouchBegin:function (event) {        cc.log('touchBegin');        var point = event.touch.getLocation();        point = this.node.convertToNodeSpaceAR(point);        this._addCircle(point);    },    _onTouchMoved:function (event) {        var point = event.touch.getLocation();        point = this.node.convertToNodeSpaceAR(point);        this._addCircle(point);    },    _onTouchEnd:function (event) {        var point = event.touch.getLocation();        point = this.node.convertToNodeSpaceAR(point);        this._addCircle(point);    },    _onTouchCancel:function (event) {        // var point = event.touch.getLocation();        // point = this.node.convertToNodeSpaceAR(point);        // this._addCircle(point);    },    _addCircle:function (point) {        var stencil = this.mask._clippingStencil;        var color = cc.color(255, 255, 255, 0);        stencil.drawPoly(this.mask._calculateCircle(point,cc.p(50,50), 64), color, 0, color);        if (!CC_JSB) {            cc.renderer.childrenOrderDirty = true;        }    },    // called every frame, uncomment this function to activate update callback    // update: function (dt) {    // },});

  

转载于:https://www.cnblogs.com/luorende/p/9214163.html

你可能感兴趣的文章
工厂模式
查看>>
PMI网站中pdu查询
查看>>
Natural Language Processing with Python 1.1
查看>>
int(*f)(int)
查看>>
浅谈Linux文件与目录权限
查看>>
防重复导出,点击后按钮置灰,一定时间后可再次点击
查看>>
一个误解: 单个服务器程序可承受最大连接数“理论”上是“65535”
查看>>
堆排序
查看>>
uC/OS-II
查看>>
hdu 4565 - so easy
查看>>
Day49 前端基础--jQuery
查看>>
随笔索引
查看>>
Python 基础 —— 字符串 方法
查看>>
Dubbo架构设计详解
查看>>
php笔记2012-10-28
查看>>
雷达的工作原理示意图_雷达的工作原理是什么
查看>>
growup怎么读_欧路词典|英汉-汉英词典 grow up是什么意思_grow up的中文解释和发音_grow up的翻译_grow up怎么读...
查看>>
js和ajax点赞功能代码_怎么利用ajax 和 js实现点赞功能
查看>>
android 等待圈_Android ProgressDialog 转圈圈
查看>>
join为什么每个字符都分割了 js_js中join()与 split()的对比
查看>>