creator在web上分辨率适配问题

很简单,在编辑器中,Canvas 所在区域会显示成一个紫色的边框,美术的设计稿一般都是以这个边框作为尺寸设计的。那如果你想要在黑边多显示一些背景,可以在边框下面放一个更大尺寸的背景图,例如高 (960 + 200) 宽 (640 + 200),这样一来黑边部分就会显示为这个背景。

我可以在下面放更大的背景图,可是跑起来会按照canvas区域裁剪渲染,超出canvas的部分被裁剪了,所以超出部分会显示为黑边。你们不裁剪就好了,或者让我们能定制一个稍大的裁剪区域。

我这边尝试了一下,并没有出现你说的裁剪问题。

我用的1.2 你什么版本

没错, 1.2 版本。我不太清楚你遇到的问题,我说下范例的做法吧,你可以打开范例看看。

Canvas 设计分辨率是图中的紫色框,然后背景图是图中蓝色边框。可以看到背景图在水平方向大过了设计分辨率。为了方便查看,我在右侧背景上放了一个长条 Sprite。
然后 Canvas 设置成 Fit Height 模式,也就是说高度和屏幕高度对齐,水平有可能发生裁剪也有可能黑边。
但是由于背景图的存在,当屏幕在水平方向上过宽时,原先的黑边会被显示为背景:(注意图中的右侧长条 Sprite)

(左边按钮是自适应的,请忽略)

我在1.2主要做了以下这三个配置,用手机浏览器看的/build,启动浏览器发现大背景图被压缩到canvas区域,canvas区域外为黑边。

onLoad: function () {
cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
}

嗯,确实是会有黑边,这应该是 bug 吧? @panda @nantas

Fit Width 和 Fit Height 都勾选的情况下,是 SHOW_ALL 模式,的确会有黑边

怎么破
这算bug吧
如果是请尽快修复

这是设计如此,因为如果不剪裁黑边的话,不止你的背景可以看到,你的其他游戏元素也可以在设计分辨率外被看到,这可能导致一些用户不希望的现象发生

根据你的需求,目前我们讨论的解决方案是:

在 Canvas 组件里当同时勾选 Fit Width 和 Fit Height 选项时,增加一个 「是否剪裁设计分辨率以外区域」的选项,取消勾选这一项就能够显示背景和其他元素了。不过这种情况下要自己处理原来黑边可以遮挡地带的穿帮问题。

哇,听起来好开心呦,帅锅,什么版本实现

我的做法是 加宽背景

这就是我要找的啊!什么时候实现!!

也可以做一个“视口遮罩”之类的控件,让用户自由选择什么可见,什么不可见。
或者在view里加入一个setBG方法就好了。
请在roadmap里加入这个功能。
现在有什么临时方案吗?

引擎大大们, 这个方案实现了么?听上去像是我们做屏幕适配的福音啊

    var canvas = this.targetCanvas
    var designResolution = canvas.designResolution
    var viewSize = cc.view.getFrameSize()
    console.log("winsize", viewSize.width, viewSize.height)
    console.log("designResolution", designResolution.width, designResolution.height)
    console.log("canvas", canvas, canvas.fitWidth, canvas.fitHeight)

    if (viewSize.width/viewSize.height > designResolution.width/designResolution.height)
    {
        canvas.fitHeight = true
    }
    else{
        canvas.fitWidth = true
    }

我通过在代码中根据当前屏幕的宽高比,手动设置canvas fitWidth 或 canvas fitHeight 似乎可以解决这个问题,不知道引擎大大怎么看?这样是否有问题?以前在cocos2dx中一直是这样弄的

当canvas 的fitwidth 和 fitheight 同时为true的时候,超过设计分辨率的部分会被裁剪,但是当只选其中一个的时候,是不会裁剪的,所以动态设置就可以了?

@Mark @panda

@jare @esygame

没人理我:joy:

自己顶一个