裁剪ClippingNode
来源:互联网 发布:淘宝网购男士夹克 编辑:程序博客网 时间:2024/05/22 08:08
ClippingNode(裁剪节点)可以用来对节点进行裁剪,可以根据一个模板切割图片的节点,生成任何形状的节点显示。
ClippingNode是Node的子类,可以像普通节点一样放入Layer,Scene,Node中。
ClippingNode 原理:
ClippingNode是利用模板遮罩来完成对Node区域裁剪的技术。如何理解ClippingNode的遮罩?看下图的例子吧。
所谓模板,就是一个形状,透过该形状可看到底板上的图层,如果底板上没有任何内容,则直接看到Layer上的内容,而底板上的东西又不会妨碍Layer上的东西,即模板在底板之外的空间对于Layer来说是透明的。
ClippingNode 常用方法
create
可以使用 static ClippingNode* create();方法创建一个ClippingNode对象。如下:
auto clipper = ClippingNode::create();
也可以使用 static ClippingNode* create(Node *stencil);方法创建;在创建的时候指定裁剪模板
auto stencil = Sprite::create("CloseNormal.png");//模板节点
clipper = ClippingNode::create(stencil);
setStencil 可以使用void setStencil(Node *stencil);方法设置“裁剪模板”节点。 如下:
clipper->setStencil(stencil);//设置裁剪模板
setInverted
可以使用void setInverted(bool inverted);方法,设置是显示被裁剪的部分,还是显示裁剪。true 显示剩余部分。false显示被剪掉部分。 如下:
clipper->setInverted(true);//设置底板可见,显示剩余部分
setAlphaThreshold
可以使用void setAlphaThreshold(GLfloat alphaThreshold);,设置alpha阈值, 只有模板(stencil)的alpha像素大于alpha阈值(alphaThreshold)时内容才会被绘制。 alpha阈值(threshold)范围应是0到1之间的浮点数。 alpha阈值(threshold)默认为1。 如下:
clipper->setAlphaThreshold(0);//设置绘制底板的Alpha值为0
ClippingNode示例
auto bg = LayerColor::create(Color4B(255, 255, 255,255));
this->addChild(bg, -1);//1
auto stencil = Sprite::create("login/guanbi.png");
stencil->setScale(2);//2
auto clipper = ClippingNode::create();
clipper->setStencil(stencil);//设置裁剪模板 //3
clipper->setInverted(false);//设置底板可见
clipper->setAlphaThreshold(0);//设置绘制底板的Alpha值为0
this->addChild(clipper);//4
auto content = Sprite::create("aiyuehaoyou.png");//被裁剪的内容
clipper->addChild(content);//5
clipper->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
1. 添加了一个白色的LayerColor作为背景层。
2. 创建一个精灵,作为裁剪模板,并放大2倍
3. 创建ClippingNode节点,并设置裁剪模板
4. 设置裁剪显示,Alpha阈值,并将裁剪节点加到层中
5. 设置被裁剪的内容
资源图片:
将 clipper->setInverted(false); 改为 clipper->setInverted(true); 运行效果如图:
- 裁剪ClippingNode
- 裁剪节点ClippingNode
- 关于Lua ClippingNode裁剪
- cocos2dx clippingNode裁剪
- 【Cocos2d-x】节点裁剪 ClippingNode
- 裁剪节点ClippingNode使用详解
- cocos2dx 3.2 裁剪节点 ClippingNode
- 裁剪节点ClippingNode使用详解
- cocos2dx精灵裁剪显示ClippingNode
- cocos2dx精灵裁剪显示ClippingNode
- cocos2dx 3.2 裁剪节点 ClippingNode
- cocos2dx 3.x ClippingNode裁剪图形
- cocos2dx[3.2]——裁剪节点ClippingNode
- Cocos2d-x 3.x ClippingNode裁剪节点
- Cocos2dx: 使用ClippingNode的节点裁剪
- ClippingNode裁剪节点(模板遮罩)
- ClippingNode
- ClippingNode
- 在数据库Mysql中使用浮点数不要用float应当使用decimal
- maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
- iptables快速设置
- Ubuntu真机下MTK平台FAE自助脚本调试工具,无需驱动工程师协助(shell源码开源)
- antd控件用法
- 裁剪ClippingNode
- BaseRecyclerAdapter之添加不同布局(头部尾部)
- Maven搭建Mybatis-spring-springMVC项目记录
- jsp中分页技术的一些想法
- leetcode 148 sortlist
- python+opencv识别动态物体
- 【密码学】CSP的概念
- JAVA SE — Day 02
- 机器学习常见算法个人总结(面试用)