cocos2d-x多分布率适配(iphone5、ipad、android)

如果没有在cocos2d-x工程下添加“Default-568h@2x.png”的话, 就无法识别出当前的真是分辨率,在iphone5上得到的信息就是640*960...


cocos2d-x从2.0.4版本已经完美适配了各种分辨率,下面贴下相关代码,

在AppDelegate::applicationDidFinishLaunching(){}里面加这些代码:

 

// 填充模式
	ResolutionPolicy kResolutionNum = kResolutionNoBorder;

	if (target == kTargetIpad)
	{
		// ipad
		CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");

		// don't enable retina because we don't have ipad hd resource
		CCEGLView::sharedOpenGLView()->setDesignResolutionSize(1024, 768, kResolutionNum);
	}
	else if (target == kTargetIphone)
	{
		// iphone

		// 设计尺寸width、height
		float visibleSizeWidth = 960;
		float visibleSizeHeight = 640;

		// 根据屏幕尺寸与设计尺寸的比,重新定义设计尺寸(参考kResolutionNum来适配)
		CCSize winSize = CCDirector::sharedDirector()->getWinSize();
		if (winSize.width/winSize.height > visibleSizeWidth/visibleSizeHeight)
		{
			visibleSizeWidth = visibleSizeHeight * winSize.width/winSize.height;
		}
		else if (winSize.width/winSize.height < visibleSizeWidth/visibleSizeHeight)
		{
			visibleSizeHeight = visibleSizeWidth / (winSize.width/winSize.height);
		}

		CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");
		CCSize VisibleSize = CCEGLView::sharedOpenGLView()->getVisibleSize();
		CCEGLView::sharedOpenGLView()->setDesignResolutionSize(visibleSizeWidth, visibleSizeHeight, kResolutionNum);
	}
	else 
	{
		// android, windows, blackberry, linux or mac
		// use 960*640 resources as design resolution size
		
		// 设计尺寸width、height
		float visibleSizeWidth = 960;
		float visibleSizeHeight = 640;

		// 根据屏幕尺寸与设计尺寸的比,重新定义设计尺寸(参考kResolutionNum来适配)
		CCSize winSize = CCDirector::sharedDirector()->getWinSize();
		if (winSize.width/winSize.height > visibleSizeWidth/visibleSizeHeight)
		{
			visibleSizeWidth = visibleSizeHeight * winSize.width/winSize.height;
		}
		else if (winSize.width/winSize.height < visibleSizeWidth/visibleSizeHeight)
		{
			visibleSizeHeight = visibleSizeWidth / (winSize.width/winSize.height);
		}
		
		CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");
		CCEGLView::sharedOpenGLView()->setDesignResolutionSize(visibleSizeWidth, visibleSizeHeight, kResolutionNum);
		CCFileUtils::sharedFileUtils()->setPopupNotify(false);
	}

 

 

 

注意:1.适配iphone5时要添加一张启动图片,图片命名为Default-568h@2x.png,不然iphone5两边还是黑边。

     2.setDesignResolutionSize()是指设计尺寸,而getWinSize()是窗口尺寸,显示时是把设计尺寸按照设置的填充模式映射到窗口上去。

     3.三种填充模式:kResolutionExactFit(宽高非等比缩放,全填充)、kResolutionNoBorder(宽高等比缩放,部分区域可能被裁减)、kResolutionShowAll(宽高等比缩放,部分区域可能出现黑边),我觉得用kResolutionNoBorder好些。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值