【发布时间】:2020-05-14 19:02:35
【问题描述】:
我正在尝试使用 ThreeJS 和 Angular 8 正确设置一个非常基本的示例。
当我尝试修改画布的大小以移除滚动条时,我收到错误“无法读取 null 的属性 'width'”。
这是因为画布,但我不知道为什么。
Component.html:
<canvas id="myCanvas"></canvas>
Component.css:
body {
margin: 0;
}
canvas {
width: 100vw;
height: 100vh;
display: block;
}
Component.ts:
export class Scene3dComponent implements OnInit {
scene = new THREE.Scene()
camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000)
canvas = document.querySelector("canvas")
renderer = new THREE.WebGLRenderer({antialias: true, canvas: this.canvas})
constructor() { }
ngOnInit() {
this.startScene();
}
startScene() {
this.renderer.setClearColor('#E5E5E5')
this.renderer.setSize(window.innerWidth, window.innerHeight)
this.renderer.render(this.scene, this.camera)
document.body.appendChild(this.renderer.domElement)
window.addEventListener('resize', () => {
this.renderer.setSize(window.innerWidth, window.innerHeight)
this.camera.aspect = window.innerWidth / innerHeight
this.camera.updateProjectionMatrix();
})
}
}
我很确定我没有理解某些东西,但我不知道是什么。
【问题讨论】:
-
我在您发布的代码中看不到任何会产生错误“无法读取 null 的属性'width'”的地方......但我确实看到
this.camera.aspect = window.innerWidth / innerHeight可能应该是@987654325 @
标签: angular three.js html5-canvas