ClippingNode
来源:互联网 发布:c语言用户标识符 编辑:程序博客网 时间:2024/05/21 22:39
http://www.mamicode.com/info-detail-247772.html
http://cn.cocos2d-x.org/tutorial/show?id=1662必看 文字遮罩、图片遮罩
裁切节点
模板:作为裁剪区域参考的节点
底板:需要被裁减的节点,即ClippingNode
模板的区域大小将在底板中被抠除,先创建ClippingNode,然后讲需要被裁减的元素添加作为其子节点,这样,就可以裁剪其全部子节点了
stencil /'stensɪl/ 模版
Swallow /'swɒləʊ/吞没
EventListenerTouchOneByOne 表示的是单点触摸;而EventListenerTouchAllAtOnce 表示的就是多点触摸
private:
Size size;
Node* node;//模板节点
Size size;
Node* node;//模板节点
ClippingNode* clipNode;//被裁剪节点
.cpp中
size=Director::getInstance()->getWinSize();
auto bg = Sprite::create("HelloWorld.png");
bg->setPosition(size/2);
addChild(bg);
auto target = Sprite::create("target.jpg");
target->setPosition(size/2);
node = Node::create();
//创建一个没有模板的裁剪节点
clipNode = ClippingNode::create();
//设置模板
clipNode->setStencil(node);
//或者创建一个带有模板的裁剪节点
//clipNode = ClippingNode::create(node);
//设置底板可见
clipNode->setInverted(true);
auto bg = Sprite::create("HelloWorld.png");
bg->setPosition(size/2);
addChild(bg);
auto target = Sprite::create("target.jpg");
target->setPosition(size/2);
node = Node::create();
//创建一个没有模板的裁剪节点
clipNode = ClippingNode::create();
//设置模板
clipNode->setStencil(node);
//或者创建一个带有模板的裁剪节点
//clipNode = ClippingNode::create(node);
//设置底板可见
clipNode->setInverted(true);
//设置绘制模板的alpha值为0
//我们在裁剪图片的时候 一般图片都是带有透明区域的,如果不设置透明值,那么裁剪的区域都是图片的原本的大小,即一块矩形区域,如果图片内容是不规则,那么是无法显示出来形状的
clipNode->setAlphaThreshold(0);
addChild(clipNode);
clipNode->addChild(target);
auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan= [this](Touch*t,Event*e){
Point pos = t->getLocation();
//每次点击屏幕,在点击处添加射击效果图片,该图片也需要被打穿
auto holdBg = Sprite::create("hole_effect.png");
holdBg->setPosition(pos);
clipNode->addChild(holdBg);
//将弹孔添加到模板上,造成底板裁剪洞口形状
auto hold = Sprite::create("hole_stencil.png");
hold->setPosition(pos);
node->addChild(hold);
return false;
};
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener,this);
addChild(clipNode);
clipNode->addChild(target);
auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan= [this](Touch*t,Event*e){
Point pos = t->getLocation();
//每次点击屏幕,在点击处添加射击效果图片,该图片也需要被打穿
auto holdBg = Sprite::create("hole_effect.png");
holdBg->setPosition(pos);
clipNode->addChild(holdBg);
//将弹孔添加到模板上,造成底板裁剪洞口形状
auto hold = Sprite::create("hole_stencil.png");
hold->setPosition(pos);
node->addChild(hold);
return false;
};
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener,this);
0 0
- ClippingNode
- ClippingNode
- ClippingNode
- ClippingNode
- ClippingNode 用法
- 关于ClippingNode
- 遮罩ClippingNode
- 裁剪ClippingNode
- ClippingNode失效问题解决办法
- ClippingNode裁切节点
- clippingnode学习笔记
- Cocos2dx 利用ClippingNode 做遮罩
- ClippingNode裁切节点
- 裁剪节点ClippingNode
- cocos2dx-3.2 ClippingNode 遮罩
- ClippingNode的使用
- ClippingNode的简单使用
- ClippingNode的使用
- java excel导出
- UserDefault
- iOS中的类目(类别)
- shell 分割字符串存至数组
- 优质友情链接的判断标准
- ClippingNode
- 黑马程序员__反射
- autolayout如何通过约束确定宽高比
- javaee 简介
- IOS 获取wifi名称
- redis的安装(centOS7)
- Eworkpal——高效便捷的工作方式
- TextView显示html图片点击图片放大等操作
- java 设计模式