需要了解 cocos2dx 中的多分辨率支持 - cocos2dx 多设备分辨率支持

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

请提供任何帮助!
:expressionless:

看起来像机翻

https://discuss.cocos2d-x.org/

@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;
    }

}

谢了,兄弟 @ourbrander. 这对我有很大帮助

@ourbrander 兄弟任何git项目仅供参考,对我有很大帮助。再次感谢您的回复。

没有git项目

你说的是2dx的屏幕适配方式吗?可以看源码,GLView.cpp的updateDesignResolutionSize方法

好的兄弟我正在努力理解谢谢大家的热情回复