如题,该如何解决
没人知道啊。。。。。。。。。。。。
你的需求不太清楚,我也改过源码的适配相关的。
我的是fitWidth模式,但希望最高比例是16:9,如果超出16:9(比如iphoneX),就按16:9
cc.ContainerStrategy.prototype._setupContainer = function(view, w, h)
修改这个函数。
新建一个脚本
if (CC_BUILD) {
cc.director.on(cc.Director.EVENT_AFTER_SCENE_LAUNCH, function() {
var canvasIns = cc.Canvas.instance
canvasIns.fitHeight = true
canvasIns.fitWidth = false
})
}
那你界面,上下两边会被截掉吧
额,那个请问,CC_BUILD是啥。。。。
意思是只有构建出来CC_BUILD才为true吗

直接在ccc中把Fit Height打勾,是这样的效果。

而,用代码改fitHeight = true ,却是这样的???

我ccc中,本就是在角上布局的
并且,我也用了widget组件,左上布局。
这是在2436 × 1125屏幕下
试一下
(function() {
if (!cc.time) {
var Timer = window.performance || Date
var _timerTable = {}
cc.time = console.time = function(label) {
_timerTable[label] = Timer.now()
}
cc.timeEnd = console.timeEnd = function(label) {
var startTime = _timerTable[label]
var duration = Timer.now() - startTime
// cc.log(`${label}: ${duration}ms`)
cc.log(label + ':' + duration + 'ms')
}
}
if (CC_BUILD && !CC_DEBUG) {
console.log = cc.log = function() {}
console.info = cc.info = function() {}
console.warn = cc.warn = function() {}
}
if (CC_BUILD) {
cc.director.on(cc.Director.EVENT_AFTER_SCENE_LAUNCH, function() {
var view = cc.view,
disignSize = view.getDesignResolutionSize()
var canvasIns = cc.Canvas.instance
var designWidth = disignSize.width,
designHeight = disignSize.height
var isIphone = cc.sys.platform == cc.sys.IPHONE
var isAndroid = cc.sys.os == cc.sys.OS_ANDROID
var isFit = false
if (isIphone || isAndroid) {
var frameSize = view.getFrameSize(),
frameWidth = frameSize.width,
frameHeight = frameSize.height
var aspectRatio = 1125 / 2436,
frameSizeRatio = frameWidth / frameHeight
isFit = frameSizeRatio == aspectRatio
if (frameSizeRatio >= aspectRatio) {
var height = frameHeight * (designWidth / frameWidth)
view.setDesignResolutionSize(designWidth, height, cc.ResolutionPolicy.FIXED_WIDTH)
} else {
var width = frameWidth * (designHeight / frameHeight)
view.setDesignResolutionSize(width, designHeight, cc.ResolutionPolicy.FIXED_HEIGHT)
}
} else {
view.setDesignResolutionSize(designWidth, designHeight, cc.ResolutionPolicy.SHOW_ALL)
canvasIns.fitHeight = true
canvasIns.fitWidth = true
}
})
}
})()
cc.view.setDesignResolutionSize(),我试过这个方法,貌似也不管用。我的是2.0版本
怎样都不对
有人知道怎么回事吗。。。。
我终于知道了!!!!坑!!!结贴
老哥,倒是给个解决办法
cc.view.setDesignResolutionSize()此方法可以改等高或等宽适配,但是改不了,场景canvas的尺寸。
this.node.getComponent(cc.Canvas).fitHeight = true;
this.node.getComponent(cc.Canvas).fitWidth = false;
这种也改不了canvas的尺寸,只有再加上一句:
cc.director.getScene().children[0].width = cc.view.getFrameSize().width / (cc.view.getFrameSize().height / this.designHeight);
cc.director.getScene().children[0].height = this.designHeight;
我是以iphonex为例