【cocos2d-x】图片平铺和Scale9Sprite

【cocos2d-x】图片平铺和Scale9Sprite,第1张

概述今天介绍cocos2dx如何使用平铺和Scale9Sprite 平铺主要用到了openGL的知识,示例代码如下: Texture2D *texture = Director::getInstance() -> getTextureCache() -> addImage("Santa.png");Texture2D::TexParams tp = {GL_LINEAR, GL_LINEAR, GL

今天介绍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;

示例代码:

//第一个Rect是指定Scale9Sprite的区域,第二个是指定中间用于拉伸的区域ui::Scale9Sprite *scale9Sprite = ui::Scale9Sprite::create("sample.png",142,80),Rect(10,10,122,60));//目标大小scale9Sprite -> setPreferredSize(visibleSize);scale9Sprite -> setposition(visibleSize * 0.5f);this -> addChild(scale9Sprite);
欢迎访问我的博客:helkyle.tk
总结

以上是内存溢出为你收集整理的【cocos2d-x】图片平铺和Scale9Sprite全部内容,希望文章能够帮你解决【cocos2d-x】图片平铺和Scale9Sprite所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1026152.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存