diff --git a/src/page/index/HandTrack/index.vue b/src/page/index/HandTrack/index.vue index 2c7d889..81ed33d 100644 --- a/src/page/index/HandTrack/index.vue +++ b/src/page/index/HandTrack/index.vue @@ -192,10 +192,29 @@ export default { .getUserMedia(constraints) .then((stream) => { if (stream) { - const tracks = stream.getTracks(); - tracks.forEach(function (track) { - track.stop(); - }); + if (typeof stream.stop === "function") { + stream.stop(); + } else { + let trackList = [ + stream.getAudioTracks(), + stream.getVideoTracks(), + ]; + for (let i = 0; i < trackList.length; i++) { + let tracks = trackList[i]; + if (tracks && tracks.length > 0) { + for (let j = 0; j < tracks.length; j++) { + let track = tracks[j]; + if (typeof track.stop === "function") { + track.stop(); + } + } + } + } + } + // const tracks = stream.getTracks(); + // tracks.forEach(function (track) { + // track.stop(); + // }); // stopStreamTracks(stream); return true; @@ -686,6 +705,7 @@ export default { }, // 更新场景内元素的位置 updatePosition(x, y, scale) { + if (!this.renderer_) return; gsap.to(this.renderer_.domElement, { autoAlpha: 1 }); if (this.mesh_) { @@ -713,6 +733,7 @@ export default { }, // hide all hideAll() { + if (!this.renderer_) return; gsap.to(this.renderer_.domElement, { autoAlpha: 0 }); }, animate() { @@ -721,6 +742,7 @@ export default { }, // THREE canvas render Render() { + if (!this.renderer_) return; this.stats.update(); this.renderer_.render(this.scene_, this.camera_); if (this.lineBox) {