Cocos2d-x 九宫格 CCScale9Sprite
文章转载自:http://www.cnblogs.com/sevenyuan/p/3195688.html
在cocos2d-x引擎中,CCScale9Sprite这个文件的位置为:
一、九宫格的实现
(1)原理
实现非常巧妙,是通过1个CCSpriteBatchNode和9个CCSprite来实现的,原理很简单,通过将原纹理资源切割成9部分(PS: 这也是叫九宫格的原因),根据想要的尺寸,完成以下的三个步骤:
a. 保持4个角部分不变形
b. 单向拉伸4条边(即在4个角两两之间的边,比如上边,只做横向拉伸)
c. 双向拉伸中间部分(即九宫格的中间部分,横向,纵向同时拉伸,PS:拉伸比例不一定相同)
(2)实现
CCSpriteBatchNode的资源为整个的纹理,9个CCSprite对应于纹理的9个部分(根据纹理不同,9部分所占比例会有所不同),根据想要的尺寸,将9部分拼装在一起!
(3)优缺点
优点:思路简单清晰;使用CCSpriteBatchNode,只需要一次绘制,效率较高
缺点:内存占用大,需要1个CCSpriteBatchNode和9个CCSprite对象;不支持CCSpriteBatchNode(如果控件很多,我们都需要对每个控件单独绘制一次,会影响效率)
二、九宫格的使用
前段时间看CCEditBox的时候,发现里面有个利用9宫格图缩放图片的,也就是缩放带圆角的图片。
这个比较有用处,很多游戏中有很多不同尺寸的圆角图片作为背景。有了CCScale9Sprite之后,只需要提供一个非常小尺寸的圆角图片就可以自由缩放其他尺寸的圆角图。是个不错的东西。
使用方法:
1、导入头文件及命名空间
#include “cocos-ext.h” USING_NS_CC_EXT;
2、初始化代码:
CCScale9Sprite* labBg1 = CCScale9Sprite::create(“wd_bg_text.png”); labBg1->setAnchorPoint(ccp(.5,.5)); labBg1->setPreferredSize(CCSizeMake(255, 20)); labBg1->setPosition(ccp(size.width/2, size.height/2)); addChild(labBg1);
说明:
setPreferredSize 就是设置需要生成的尺寸大小。
看效果:
Cocos2d-x 九宫格 CCScale9Sprite相关推荐
- cocos2d-x2.2九宫格CCScale9Sprite有bug
使用Cocosbuilder, 添加九宫格控件,然后设置图片,如果图片是从plist中加载的,在游戏中就可能有问题. 当plist中的图片旋转过的话,在游戏中就会显示错误. 找了大半天,终于发现是CC ...
- cocos2d-x中CCScale9Sprite的另一种实现
2019独角兽企业重金招聘Python工程师标准>>> cocos2d 2.0之后加入了一种九宫格的实现,主要作用是用来拉伸图片,这样的好处在于保留图片四个角不变形的同时,对图片中间 ...
- 1cocos2dx扩展库UI控件,CCControlSlider,CCScale9Sprite(九妹图),CCControlSwitch,CCControlButton
UI控件来自cocos2dx的扩展库,完善了UI方面的元素,使cocos2dx更加丰富多彩.使用扩展库需包含: #include "cocos-ext.h" USING_NS ...
- Cocos2d-x:使用九宫格(九切片)自定义缩放资源
从开发iOS起地九切片技术的使用就不熟练,最近遇到的需求是要根据麻将牌的数量来适应背景图片,下面就是有效的实现缩放的方法: //9宫格图片//确定大小ImageView *imageBg = Imag ...
- 【转】CCScale9Sprite和CCControlButton
转自:http://blog.csdn.net/nat_myron/article/details/12975145 在2dx下用到了android下的.9.png图片,下面是原图 查了一下2dx ...
- cocos2d-x 使用 CCScale9Sprite 实现微信对话框
1.有底框的文字 微信的对话框特点在于它有一个可变大小的底图衬托,显得非常舒服,怎么实现的呢?先上图,然后慢慢说: 2.什么是九宫格构图? 有个概念叫九宫格构图,说的就是这种会变化背 ...
- cocos2dx学习之路(七)——精灵、精灵旋转、淡入、水平翻转、自由移动、九宫格精灵
理解精灵的含义 学会创建一个精灵 掌握对精灵的控制 了解九宫格精灵及其应用 Sprite在2D游戏场景设计中指的就是像素图可以移动可以控制 1.通过图片路径创建精灵 Sprite* sprite = ...
- cocos2d 性能优化
cocos2D 性能优化 (新手干货) cocos2D 性能优化主要就是对于内存的优化 1.纹理大小优化 纹理占用是cocos内存占用的大头,所以优先解决纹理的内存优化. 在TexturePacker ...
- 刨根问底---cocos2d源码的理解与分析
主要看的是cocos2d的2D部分C++源码(不包含3D的或者是creator相关的),某些比较特殊的方法和变量会比较详细的展开分析讨论. cocos2dx_3.1.7版本 CCRef:[已看完] c ...
最新文章
- AndroidStudio自定义属性xmlns无法识别问题解决in Gradle projects,always use http://schemas.android.com/apk/res-auto
- python有趣的面试题_python面试题目
- C#值类型和引用类型的不同
- 界面设计方法 (1) — 4. 看板功能的设计
- Python 爬取 6000 篇文章分析 CSDN 是如何进入微信 500 强的
- sql server根据表中数据生成insert语句
- java manualbuffer_FlatBuffer Java Bean自由转换
- Activity内部Handler引起内存泄露的原因分析
- gif表情包在线生成器怎么一键生成图片
- 嵌入式C语言自我修养分享课件
- 学python多长时间、才能做点东西_如果只有1小时学Python,看这篇就够了
- tp5.1使用json返回网址后出现的反斜杠问题
- 图像可视化——matplotlib绘图入门基础
- ASC制动效果成因个人理解
- 计算机教室布置软木,软木照片墙布置,让孩子体验手工的乐趣
- Python sys.stdout
- iphonex时间显示蓝色_一文了解显示技术的发展简史
- C#实现帮助文档CHM
- 井通区块链发行通证介绍
- 极路由云平台倒闭,路由器免插件离线ROOT方法
热门文章
- 小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖
- Asp.Net Mvc基于Fleck开发的多人网页版即时聊天室
- 深入探究802.11ac技术
- Python一键清空购物车
- 2DPCA、(2D)2PCA公式推导
- 技术工坊|腾讯华为入局的区块链BaaS平台解决了什么问题?(上海)
- 数字化转型 — 新能源汽车 — 生产制造流程 — 总装车间
- 《A Single Camera Eye-Gaze Tracking System with Free Head Motion》论文阅读
- matlab中switch函数用法
- 科研论文里的paired t-test