view.getFrameSize() 的等價函式在哪 (3.4.1)

2.4升上来的
view.getFrameSize()在3.4.1被标记即将废弃
请问替代函式是什么?
screen.width | height不是我想要的, 也试了许多其他的size也不对
因为涉及到数学计算需要和原本getFrameSize()同大小

view.visibleSize()

visibleSize和 frameSize不是一个东西。不要弄混了

2.x的时候。frameSize 就是屏幕尺寸啊,上3.x意义不一样了而已
其他我也没细看,总之我2.x就是用frameSize来获取设备屏幕尺寸,3.x只有 visibleSize对的上

getFrameSize() getVisibleSize() 是不一样的

官方代码

暂时无法找到能取代的getFrameSize()的方法 :joy:

这个不就是嘛?

不是的 印出的数值不相等

官方建议改用screen.windowSize
但压根没这方法

我也想问类似这种API在3.X到底是啥,现在用的是直接获取Canvas节点的Width、Height

直接获取Canvas节点的Width、Height, 拿到的是似乎是设计分辨率

请问有官方人员能回应一下吗
确实有需求要用到 getFrameSize
求等价的方法

有screen.windowSize啊 3.4.1

console.log(screen.windowSize);
显示 undefined

看看是不是引入的这个

是 screen.windowSize,可以关注下接口注释说明,废弃的接口一般会有替代方案说明

screen 需要从 cc 模块导入,如果访问到 screen.windowSize 是 undefined,可能是使用了 web 标准的 window.screen 对象,这个不是从 cc 模块导入的。
应该像这样导入 screen 对象:

import { screen } from 'cc'

未来我们希望减少对 web feature 的依赖,提供更多平台通用的接口
像上边提到的 window.screen 就是一个 web 接口,不是引擎提供的

抱歉这里是会造成一些使用上的歧义

好的 确实没注意到要 import screen
我试了下在web下 getFrameSize 和 screen.windowSize 获得的大小不相等 但长宽比是一致的
有办法获得和原本 getFrameSize 一样的大小吗?
谢谢官方人员回答 :grinning:

screen.windowSize除以screen.devicePixelRatio

2赞

getFrameSize 获取到的是 frame 的 css size,这个是 web 行为,后续我们希望废弃 web 相关特性的接口
当然我们也不希望改变这个接口的行为,这会破坏接口兼容性

windowSize 相当于 css width/height * devicePixelRatio,这个是真实的物理像素,也是我们希望提供给开发者的屏幕宽高,如果需要保持一致的话,只需要做一个除法就好了

let frameWidth = screen.windowSize.width / screen.devicePixelRatio
let frameHeight = screen.windowSize.height / screen.devicePixelRatio
3赞

谢谢两位大佬
相除之后和原本getFrameSize一致了 :blush:

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。