【Cocos2dx】使用CCScale9Sprite拉伸图片

如下图,在资源的Rescources文件夹中自带一个40x40的按钮图片


如果我们在Cocos2dx设定此图片自动拉伸为填充游戏屏幕的800x600图片,如下图:


总不能在外部利用Photoshop等图形处理软件,自行把这张40x40的图片拉伸为800x600,然后根据不同的设备的分辨率,做多张图片吧?

此时可以利用Cocos2dx的CCScale9Sprite。

CCScale9Sprite不属于Cocos2dx的基本类,但一般的Cocos2dx已经引入这个类了。

部分Cocos2dx可能需要与《【Cocos2dx】资源文件夹,播放背景音乐,导入外部库》(点击打开链接)一样,添加Cocos2dx安装文件夹下的extensions目录,之后通过【右击工程】->【属性】->【配置属性】->【链接器】->【输入】,编辑【附加依赖项】,自行补上libExtensions.lib,把这个基本包补上,但大部分的Cocos2dx只要在要实现的场景cpp中引入#include "cocos-ext.h"这个头文件就可以使用CCScale9Sprite。

像《【Cocos2dx】Windows平台下Cocos2dx 2.x的下载、安装、配置,打造自己的Helloworld》(点击打开链接)一样,在AppDelegate.cpp关闭程序的调试信息,同时在main.cpp将程序设定尺寸大小为800x600,对HelloWorldScene.cpp引入#include "cocos-ext.h"这个头文件,同时将其bool HelloWorld::init(){}方法修改,得到如下代码:

#include "HelloWorldScene.h"
#include "cocos-ext.h"

USING_NS_CC;

CCScene* HelloWorld::scene()
{
    // 'scene' is an autorelease object
    CCScene *scene = CCScene::create();
    
    // 'layer' is an autorelease object
    HelloWorld *layer = HelloWorld::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{   
	//获取屏幕的尺寸、位置信息等
	CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); 
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
	
	cocos2d::extension::CCScale9Sprite *scale9Sprite = cocos2d::extension::CCScale9Sprite::create("CloseSelected.png");//声明要拉伸的图片
	scale9Sprite->setContentSize(CCSize(visibleSize.width,visibleSize.height));//设置图片的大小拉伸至整个屏幕这么大
	scale9Sprite->setPosition(ccp(origin.x + visibleSize.width/2,origin.y + visibleSize.height/2));//图片的中心点位于屏幕的中央
	this->addChild(scale9Sprite);//把图片放上场景

	return true;
}


void HelloWorld::menuCloseCallback(CCObject* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
	CCMessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");
#else
    CCDirector::sharedDirector()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif
#endif
}

就可以把一张原本为40x40的图片尽可能地拉伸,如上图,成为了一张还不算太难看的800x600的背景图片了。其中CCScale9Sprite位于cocos2d::extension这个命名空间。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值