实现一个刮刮卡的效果,于是在论坛里搜集了一些资料并且看了一下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) { // },
});

  

最新文章

  1. php lock_sh共享锁 与 lock_ex排他锁
  2. C#的变迁史 - C# 5.0 之其他增强篇
  3. wen7安装oracle 11g出现"未找到文件 E:\development_tools\database\oracle\install_d\dbhome\owb\external\oc4j_applications\applications\WFMLRSVCApp.ear"
  4. JS正则汇总
  5. UML 2中结构图的介绍
  6. iOS 9之WatchKit for WatchOS 2
  7. 【Eclipse DDMS】 Can't bind to local 8600 for debugger
  8. div仿checkbox表单样式美化及功能
  9. VBS中解决路径带空格的三种方法
  10. Oracle-11g 基于 NBU 的 rman 冷备份及恢复
  11. 上海2017QCon个人分享总结
  12. activity--常见属性总结
  13. cisco 的ACL
  14. ubuntu 14.04 安装 glog
  15. Python 个人笔记(一)
  16. Hibernate主键生成器
  17. 整理关于Java进行word文档的数据动态数据填充
  18. MySQL数据库之数据类型和完整性约束
  19. poj3311 状压dp+floyd
  20. casperjs进行web功能自动化测试demo

热门文章

  1. [原创]基于Zynq Linux环境搭建(二)
  2. Angular项目中共享模块的实现
  3. 配置maven项目的开发时的默认jdk版本
  4. Linux 内存释放命令非常不错具有参考借鉴价值
  5. String,StringBuffer,StringBudilder区别--2019-04-13
  6. 【ABP】工作单元——不进行事物独立执行功能
  7. django——用户认证组件
  8. 隐藏"Input"标签默认样式
  9. typedef 摘自百度百科
  10. Linux——目录和文件