ClippingNode的使用 分类: ios开发 Cocos2d-x 2015-02-09 18:17 112人阅读 评论(0) 收藏
2015-02-09 18:17
691 查看
概述
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("CloseNormal.png"); stencil->setScale(2);//2 auto clipper = ClippingNode::create(); clipper->setStencil(stencil);//设置裁剪模板 //3 clipper->setInverted(true);//设置底板可见 clipper->setAlphaThreshold(0);//设置绘制底板的Alpha值为0 this->addChild(clipper);//4 auto content = Sprite::create("HelloWorld.png");//被裁剪的内容 clipper->addChild(content);//5 clipper->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
添加了一个白色的LayerColor作为背景层。
创建一个精灵,作为裁剪模板,并放大2倍
创建ClippingNode节点,并设置裁剪模板
设置裁剪显示,Alpha阈值,并将裁剪节点加到层中
设置被裁剪的内容
运行效果如图:
将
clipper->setInverted(true);改为
clipper->setInverted(false);运行效果如图:
资源图片
相关文章推荐
- iOS开发网络篇—使用ASI框架进行文件下载 分类: ios开发 2015-02-02 10:43 133人阅读 评论(0) 收藏
- iOS多线程编程之NSOperation和NSOperationQueue的使用 分类: ios开发 2015-01-01 12:34 145人阅读 评论(0) 收藏
- iOS开发~CocoaPods使用详细说明 分类: ios相关 2015-04-01 16:45 68人阅读 评论(0) 收藏
- 【iOS】UIViewController、UINavigationController与UITabBarController的整合使用 分类: ios开发 2015-01-29 11:06 176人阅读 评论(0) 收藏
- 调度器(scheduler) 分类: ios开发 Cocos2d-x 2015-02-05 13:58 199人阅读 评论(0) 收藏
- cocos2d::Value 分类: Cocos2d-x 2015-02-09 18:20 112人阅读 评论(0) 收藏
- 图灵ios培训第一周(使用UIWebView创建简易浏览器) 分类: ios开发 2015-03-28 12:43 295人阅读 评论(0) 收藏
- iOS开发网络数据之AFNetworking使用 分类: ios技术 2015-04-03 16:35 105人阅读 评论(0) 收藏
- iOS多线程编程之NSThread的使用 分类: ios开发 2015-01-01 12:36 123人阅读 评论(0) 收藏
- IOS导航栏的使用方法 分类: ios开发 2015-01-29 10:40 282人阅读 评论(0) 收藏
- Diff/Patch 工具的使用 分类: 嵌入式开发学习 2014-06-09 09:57 463人阅读 评论(0) 收藏
- iOS开发网络篇—JSON介绍 分类: ios开发 2015-01-24 15:01 137人阅读 评论(0) 收藏
- IOS开发之IOS8.0最新UIAlertController 分类: ios技术 2015-01-20 14:24 144人阅读 评论(1) 收藏
- 安卓开发中Tab标签页的使用——TabHo… 分类: Android开发 2014-05-30 10:57 85人阅读 评论(0) 收藏
- iOS开发网络篇—搭建本地服务器 分类: ios开发 2015-01-21 19:05 257人阅读 评论(1) 收藏
- ios 同步Get请求的实现 分类: ios开发 2015-01-30 17:36 362人阅读 评论(0) 收藏
- iOS开发网络篇—文件下载(一·不合理) 分类: ios开发 2015-01-24 16:02 244人阅读 评论(0) 收藏
- iOS开发网络篇—HTTP协议 分类: ios开发 2015-01-21 19:45 147人阅读 评论(0) 收藏
- c语言 中 # ##的使用方法 分类: 嵌入式开发学习 2014-05-23 17:16 141人阅读 评论(0) 收藏
- iOS开发网络篇—网络编程基础 分类: ios开发 2015-01-21 19:24 140人阅读 评论(0) 收藏