iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
Modern Web

Three.js 的學習筆記系列 第 10

[Day 10] Three.js - Screen Size

  • 分享至 

  • xImage
  •  

今日要講一講three.js 嘅 screen size, 之前一直用緊800x600 嘅 aspect ratio 方便之前測試
再用以下的code來讀取widow嘅大細

const sizes = {
    width: window.innerWidth,
    height: window.innerHeight
}
console.log(sizes.width, sizes.height)

https://ithelp.ithome.com.tw/upload/images/20220921/20128975xE01RViEtZ.jpg

你會見到而家係968x683, 而且會隨著你的視窗大小而改變
現在我們要用這個新的aspect ratio 來設定camera 的大小

window.addEventListener('resize', ()=>
{
    //update sizes
    sizes.width = window.innerWidth
    sizes.height= window.innerHeight
    //update camera
    camera.aspect = sizes.width/sizes.height
    camera.updateProjectionMatrix()
    console.log(sizes.width, sizes.height)

    //update rederer
    renderer.setSize(sizes.width,sizes.height)
})

https://ithelp.ithome.com.tw/upload/images/20220921/201289754NmH7tzOXo.jpg

當拉動視窗時, 係console log 你會睇到數值不斷改變, 而且object 仍然在視窗的正中心
但你仍然會留意到上下左右有一條灰色邊, 我現在將css body background 改成紅色
而且你會見到右面同下面都有scrollbar, 我可以理解為 js 知道window 嘅大小, 而js output 的位置並不正確
呢個問題應該係可以喺css到解決
https://ithelp.ithome.com.tw/upload/images/20220921/20128975Q60wbctsAX.jpg

將下列的code 加入css中

*
{
    margin: 0;
    padding :0;
}

html,
body
{ 
    overflow:hidden;
}

.webgl
{
    position: fixed;
    top:0;
    left:0;
    outline:none;
}

https://ithelp.ithome.com.tw/upload/images/20220921/20128975tXErWpnKYu.jpg

現在你做見到四邊大小和螢幕吻合

第十日完!


上一篇
[Day 9] Three.js - Mouse Control
下一篇
[Day 11] Three.js - Geometries
系列文
Three.js 的學習筆記12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言