请帮助我了解 Android 中的项目需要哪些更改和哪些代码(分辨率策略)以支持 cocos2dx c++ 中的多分辨率设备 fitwithout 拉伸图像。我如何为android中的多个设备分辨率可见区域管理相同位置的所有对象. 您的支持将不胜感激
请提供任何帮助!

看起来像机翻
@wingser @645917033 感谢你的回复。
为什么我不能在这里得到答案。这里使用 cocos2dx 的开发者比这个“https://discuss.cocos2d-x.org”站点还多。请做有帮助的。我在中文论坛上学到了很多关于cocos2dx的新东西,希望我的问题也能得到解答。
是否有任何帮助 伙计们 ??
你可以使用任何一种屏幕适配策略来获得想要的效果,这个根据你开发的内容来制定。
例如,我是横版的内容。
第一步、我可以使用固定高度,裁切掉上下的内容的方法。
cc.ResolutionPolicy.FIXED_WIDTH
cc.ResolutionPolicy.NO_BORDER
都适用。
第二步(非必须),根据我的设计尺寸(1024X768)的比例,和当前屏幕的比例,来计算我需要将内容缩放多少,才能尽可能多的显示内容。
第三步(非必须),根据上面计算的比例,将部分内容缩放、移动位置,达到最佳的效果。 例如有些背景,可以底部对齐,那么就让它保持底部对齐。
在10:20以上的全面屏上,需要把一些内容缩小,以显示更多内容,那么这个节点的宽度就需要设计得比1024更长一些,例如1280等。
总之,没有一个方法是一次搞定的。需要根据设计稿的不同而做不同的程序计算。
下面是动态计算坐标和缩放的脚本(JS)
/**
* 更新UI坐标
*/
AirClassRoomPageObj.onResize = function () {
var _self = this;
/**
* 场景使用的缩放比例
* @type {*|number}
*/
_self.sceneScale = appManager.getFullUIScale();
/**
* UI使用的缩放比例 UI如果直接使用和场景一样的话 那可能太小了。适当放大一点UI
* @type {number}
*/
_self.uiScale = _self.sceneScale * 1.4;//加一个系数 不要缩小太多
if (_self.uiScale > 1) _self.uiScale = 1;
_self.skin.setScale(_self.uiScale, _self.uiScale);
/**
* 使用的是两倍设计宽度,没有必要再计算
* @type {number}
*/
_self.sceneWidth = _self.classRoomNd.getBoundingBoxToWorld().width;
/**
* 场景能够移动的最左端,因为是移动的内部元件,需要转换一下;
* @type {number}
*/
_self.maxSceneLeftX = (_self.winSize.width - _self.sceneWidth) / _self.skin.scaleX;
var visibleRect = cc.visibleRect;
var bounds = _self.backBtn.getBoundingBoxToWorld();
// var pos = _self.skin.convertToNodeSpace(cc.p(visibleRect.right.x - padding - bounds.width * 0.5, visibleRect.top.y - padding - bounds.height * 0.5));
var pos = _self.skin.convertToNodeSpace(cc.p(visibleRect.right.x, visibleRect.top.y));
_self.rtNd.setPosition(pos);
pos = _self.skin.convertToNodeSpace(cc.p(visibleRect.left.x, visibleRect.top.y));
_self.ltNd.setPosition(pos);
pos = _self.skin.convertToNodeSpace(cc.p(visibleRect.left.x, visibleRect.bottom.y));
_self.lbNd.setPosition(pos);
pos = _self.skin.convertToNodeSpace(cc.p(visibleRect.right.x, visibleRect.bottom.y));
_self.rbNd.setPosition(pos);
pos = _self.skin.convertToNodeSpace(cc.p(visibleRect.center.x, visibleRect.bottom.y + 80 * _self.uiScale));
_self.menuNd.setPosition(pos);
//调整场景的位置,使其适合多种比例
pos = _self.skin.convertToNodeSpace(cc.p(visibleRect.bottom.x, (visibleRect.bottom.y - (1 - _self.sceneScale) * 300)));
_self.classRoomNd.y = pos.y;//窄屏的话 场景往下移动
if (_self.classRoomNd.x < _self.maxSceneLeftX) {
_self.classRoomNd.x = _self.maxSceneLeftX;
}
}
没有git项目
你说的是2dx的屏幕适配方式吗?可以看源码,GLView.cpp的updateDesignResolutionSize方法
好的兄弟我正在努力理解谢谢大家的热情回复
