加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Cocos2dx 3.0 实战之—— 重写《超级马里奥》其二 加入自适应策

发布时间:2020-12-14 19:49:57 所属栏目:百科 来源:网络整理
导读:做了2年的跨平台,无论是Sencha Touch也好,Qt Quick也好,Cocos2dx也好,屏幕的自适应始终是让人很头疼很恼火的事情。 虽然官方给了多套资源的方法,但是有时候想想,一个小游戏还搞那么多资源确实挺浪费的。 最近在官网找到这样的资料,虽然是JS版本的,经

做了2年的跨平台,无论是Sencha Touch也好,Qt Quick也好,Cocos2dx也好,屏幕的自适应始终是让人很头疼很恼火的事情。


虽然官方给了多套资源的方法,但是有时候想想,一个小游戏还搞那么多资源确实挺浪费的。


最近在官网找到这样的资料,虽然是JS版本的,经过本人的修改弄成了一个C++版本。并测试过,证实还是可行的。


这里给出官网链接:http://cn.cocos2d-x.org/tutorial/show?id=1434


然后给出我的源码:


//设计的资源宽,高
	float designWidth = 480;
	float designHeight = 320;
	//设备的宽高
	float deviceWidth = glview->getFrameSize().width;
	float deviceHeight = glview->getFrameSize().height;
	//设置缩放比例以及x,y轴的实际差
	float scale = 1.0f,gapX = 0.0f,gapY = 0.0f;
	//得到缩放比例
	scale = deviceWidth / designWidth;
	float scaledHeight = designHeight * scale;
	//得到X,Y轴差
	if (scaledHeight <= deviceHeight) {
		gapY = (deviceHeight - scaledHeight);
	}
	else {
		scale = deviceHeight / designHeight;
		float scaledWidth = designWidth * scale;
		if (scaledWidth <= deviceWidth) {
			gapX = (deviceWidth - scaledWidth);
		}
	}
	//设置分辨率和资源的配置
	glview->setDesignResolutionSize(480 + gapX / scale,320 + gapY / scale,ResolutionPolicy::SHOW_ALL);

加入位置如图:



最后别忘了设置窗口的大小,如图

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读