Threejs_03 全屏+响应式画布实现

咋控制全屏呢?

1.做一个用来点击的按钮

var btn = document.createElement("button");
btn.innerHTML = "点击全屏";
btn.style.position = "absolute";
btn.style.top = "10px";
btn.style.left = "10px";
btn.style.zIndex = "999";

2.给这个按钮添加一个事件,并且给他放入屏幕中

btn.onclick = function () {
  // 全屏 (画布)
  // renderer.domElement.requestFullscreen();
  // 全屏 (document.body)  可以看到写入的按钮
  document.body.requestFullscreen();
};
// 将按钮追加
document.body.appendChild(btn);

请注意:这个时候应该让document来实现这个requestFullscreen 否则 全屏以后 就看不见这个按钮了。因为全屏以后,看见的就是document 而不是renderer了

点击以后 就能进入全屏模式了

3.退出全屏按钮,虽然说进入全屏以后 会显示点击键盘上的ESC可以退出全屏,但是我们也需要做出这个功能。

//退出全屏按钮 
var exitBtn = document.createElement("button");
exitBtn.innerHTML = "点击退出全屏";
exitBtn.style.position = "absolute";
exitBtn.style.top = "10px";
exitBtn.style.left = "100px";
exitBtn.style.zIndex = "999";
exitBtn.onclick = function () {
  // 退出全屏
  document.exitFullscreen();
};
// 将按钮追加
document.body.appendChild(exitBtn);

这个时候,全屏的功能就实现了

咋控制画布自适应呢?

 问题蛮严重的哦~

resize事件

我们可以侦听窗口的resize改变,触发回调函数,动态的修改画布的大小比例

// 监听窗口的变化 重新设置渲染器的大小 画布自适应窗口
window.addEventListener("resize", () => {
  // 重新设置渲染器的大小
  renderer.setSize(window.innerWidth, window.innerHeight);
  // 重新设置相机的宽高比
  camera.aspect = window.innerWidth / window.innerHeight;
  // 重新计算相机的投影矩阵
  camera.updateProjectionMatrix();
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Web阿成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值