今天介绍cocos2dx如何使用平铺和Scale9Sprite
平铺主要用到了openGL的知识,示例代码如下:
Texture2D *texture = Director::getInstance() -> getTextureCache() -> addImage("Santa.png");
Texture2D::TexParams tp = {GL_LINEAR,GL_LINEAR,GL_REPEAT,GL_REPEAT};
texture -> setTexParameters(tp);
auto sprite = Sprite::createWithTexture(texture,Rect(0,visibleSize.width,visibleSize.height));
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x,visibleSize.height/2 + origin.y));
this->addChild(sprite,0);
原图片:
实现效果:
注意:
-
TexParams是纹理参数,可以通过它实现纹理变换,前两个参数是纹理过滤规则,后两个参数是纹理环绕模式。
常见的几种:* 过滤规则 * GL_LINEAR:使用邻近像素点来插值补点 * GL_NEAREST:最邻近点过滤 * 环绕模式 * GL_REPEAT:重复纹理 * GL_CLAMP:边缘像素复制
-
注意纹理的长宽必须是2的n次方,否则会报错
Scale9Sprite有人叫9宫格,有人叫9妹,不过叫什么都无所谓,用法是一样的。
Scale9Sprite可以用来拉伸图片,但是不失真。实现原理就是把图片分成九块,四个角的区域都保持不变,上下左右四条边只做一个方向的拉伸,中间区域放大,示例如下:
原图片:
使用setScale放大:
使用Scale9Sprite:
分割图片:
用法:
cocos2d-x 3.x以后废弃了Extension::Scale9Sprite,现在统一使用ui::Scale9Sprite,使用它首先要引入头文件和名称空间
#include "cocos-ext.h"
USING_NS_CC_EXT;
示例代码: