1、原理

CCScale9Sprite的实现非常巧妙,是通过1个CCSpriteBatchNode和9个CCSprite来实现的,原理很简单,通过将原纹理资源切割成9部分(PS: 这也是叫九宫图的原因),根据想要的尺寸,完成以下的三个步骤:
(1)保持4个角部分不变形
(2)单向拉伸4条边(即在4个角两两之间的边,比如上边,只做横向拉伸)
(3)双向拉伸中间部分(即九宫图的中间部分,横向,纵向同时拉伸,PS:拉伸比例不一定相同)


CCSpriteBatchNode的资源为整个的纹理,9个CCSprite对应于纹理的9个部分(根据纹理不同,9部分所占比例会有所不同),根据想要的尺寸,将9部分拼装在一起!

2、使用方法
构造方法如下

 /*** Constructor function.* @function* @param {string|cc.SpriteFrame} file file name of texture or a SpriteFrame* @param {cc.Rect} rectOrCapInsets* @param {cc.Rect} capInsets* @returns {Scale9Sprite}*/ctor: function (file, rectOrCapInsets, capInsets) {cc.Node.prototype.ctor.call(this);//for async texture loadthis._loader = new cc.Sprite.LoadManager();this._renderCmd.setState(this._brightState);this._blendFunc = cc.BlendFunc._alphaPremultiplied();this.setAnchorPoint(cc.p(0.5, 0.5));// Init vertex data for simplethis._rawVerts = null;this._rawUvs = null;this._vertices = dataPool.get(8) || new Float32Array(8);this._uvs = dataPool.get(8) || new Float32Array(8);if (file !== undefined) {if (file instanceof cc.SpriteFrame)this.initWithSpriteFrame(file, rectOrCapInsets);else {var frame = cc.spriteFrameCache.getSpriteFrame(file);if (frame)this.initWithSpriteFrame(frame, rectOrCapInsets);elsethis.initWithFile(file, rectOrCapInsets, capInsets);}}if (webgl === undefined) {webgl = cc._renderType === cc.game.RENDER_TYPE_WEBGL;}},

(1)js语法

var bgKuang = new cc.Scale9Sprite("res/outline.png", null, cc.Rect(30,30,240,240));
bgKuang.setContentSize(cc.size(1068,600))    bgKuang.setPosition(bgKuang.getParent().getContentSize().width / 2, bgKuang.getParent().getContentSize().height / 2);

(2)lua语法

local bgKuang = cc.Scale9Sprite:create("res/outline.png", nil, cc.Rect(30,30,240,240))
bgKuang:setContentSize(cc.size(1068,600))    bgKuang:setPosition(bgKuang:getParent():getContentSize().width / 2, bgKuang:getParent():getContentSize().height / 2)

(3)参数说明
在lua中,有setCapInsets方法,也就是构造方法中的第三个参数,
参考http://blog.csdn.net/u011040361/article/details/48602847

cocos2dx之九宫格相关推荐

  1. 浅谈一下对cocos2d-x中九宫格精灵的简单理解和使用

    浅谈一下对cocos2d-x中九宫格精灵的简单理解和使用 首先,使用cocos new命令创建了一个cocos2d-x的C++项目和Lua项目,在生成的HelloWorld中写测试代码. 1.C++代 ...

  2. Cocos2d-x:使用九宫格(九切片)自定义缩放资源

    从开发iOS起地九切片技术的使用就不熟练,最近遇到的需求是要根据麻将牌的数量来适应背景图片,下面就是有效的实现缩放的方法: //9宫格图片//确定大小ImageView *imageBg = Imag ...

  3. cocos2d-x2.2九宫格CCScale9Sprite有bug

    使用Cocosbuilder, 添加九宫格控件,然后设置图片,如果图片是从plist中加载的,在游戏中就可能有问题. 当plist中的图片旋转过的话,在游戏中就会显示错误. 找了大半天,终于发现是CC ...

  4. Cocos2d-x 九宫格 CCScale9Sprite

    文章转载自:http://www.cnblogs.com/sevenyuan/p/3195688.html 在cocos2d-x引擎中,CCScale9Sprite这个文件的位置为: 一.九宫格的实现 ...

  5. cocos2dx学习之路(七)——精灵、精灵旋转、淡入、水平翻转、自由移动、九宫格精灵

    理解精灵的含义 学会创建一个精灵 掌握对精灵的控制 了解九宫格精灵及其应用 Sprite在2D游戏场景设计中指的就是像素图可以移动可以控制 1.通过图片路径创建精灵 Sprite* sprite = ...

  6. 【HIMI转载推荐之三】基于Cocos2dx引擎UI扩展引擎包[cocos2d-x-3c]

    [前言点评] 此篇主要作者:jason-lee-lijunlin  基于Cocos2d-x引擎进行封装的UI框架的扩展包. 此文章Himi已经仔细看过,总体来说是篇很好的文章,是给使用-x引擎的童鞋们 ...

  7. Cocos2dx版本介绍【至3.10版】

    Cocos Studio升级为Cocos.更优秀的产品.更优质的服务.    1. 游戏开发一站式解决方案,低成本.高效率  2. 高性能,一次制作,多终端平台共享  3. Windows与Mac同步 ...

  8. cocos2d-x 使用 CCScale9Sprite 实现微信对话框

    1.有底框的文字 微信的对话框特点在于它有一个可变大小的底图衬托,显得非常舒服,怎么实现的呢?先上图,然后慢慢说:      2.什么是九宫格构图?     有个概念叫九宫格构图,说的就是这种会变化背 ...

  9. 手游(cocos2dx)图片资源压缩

    最好的减少资源方式当然是从设计上避免.比如: 1. 减少帧动画的使用(这也是骨骼动画大行其道的原因). 2. 尽量复用资源(比如九宫格技术,角色间通用特效,肉眼排查,等等) 3. 不得不使用帧动画的场 ...

最新文章

  1. 如何在XAF中显示自定义窗体和控件
  2. jmeter操作数据库
  3. 今天我解决的sql中文乱码问题
  4. leetcode371. 两整数之和 不用+号做加法
  5. scala mysql连接池_Java与Scala的两种简易版连接池
  6. mvc可以运行在linux下吗,asp.netmvc部署到linux(centos)
  7. “一键删除中国App”应用海外走红,下载量破500万!谷歌:我先把你删除了
  8. 谈谈我的session跨域处理方法
  9. 全局变量和静态变量的区别
  10. 驱动加载工具(InstDrv - V1.3中文版)
  11. 《单片机原理及应用(魏洪磊)》第七章第8题
  12. win7看视频卡顿或声音画面不同步的解决步骤
  13. 无盘新手大本营(转)
  14. 不可重复读和幻读有什么区别?
  15. win10双 cd linux,win10系统将CdLinux装入硬盘的还原方案
  16. [CPNet]-理想亲和图的生成以及作用——Blank
  17. channel的解析和配置方法
  18. 记录下我磕磕碰碰的三个月找工作经历,绝对干货
  19. 单片机c语言p1口转弯灯实验,单片机p1口转弯灯实验程序
  20. 微信小程序——开发介绍

热门文章

  1. 如何用python编写程序_如何进行Python程序的编写
  2. 唯品会2019Q1新财报:净利润涨近65% 增速放缓营收或遇天花板
  3. linux设置屏保时间命令,centos下设置屏保
  4. html表格打印成pdf格式文件,使用html2pdf打印PDF格式文件中的数据作为PDF文件
  5. 推荐一款 Kubernetes YAML 文件静态分析工具 KubeLinter
  6. 微信如何做私域流量,如何利用淘宝和微信做到私域流量内的互动成交呢?
  7. 什么是Web1.0时代、Web2.0时代、Web3.0时代?
  8. 中专计算机专业能报铁路专科吗,中专有铁路专业吗
  9. Java中常见的50个错误、异常及规避技巧
  10. java学习的环境配置与安装(sublime汉化,jdk8,convert to utf8)快速入门