javascript - 如何用cancelAnimationFrame停止旋转?

标签 javascript animation three.js requestanimationframe

我目前正在使用 Threejs 和 requestAnimationFrame 方法。我尝试按住按钮将相机向右旋转。我的问题是,通过释放按钮,旋转不会停止,每次我再次按下按钮时都会加速。

HTML:

<button id="right" onmousedown="rotateRight()" onmouseup="rotatestopRight()">Right</button> 

JavaScript:

function rotateRight(){
    mainPivot.add(camera);
    mainPivot.rotation.y+=Math.PI/180;
    requestAnimationFrame( rotateRight );
}

function rotatestopRight(){
    cancelAnimationFrame( rotateRight );
}

我尝试通过在发布时设置mainPivot.rotation.y-=Math.PI/180;来解决这个问题,这有效,但这不是最好的解决方案,因为onmouseup code> 事件很容易被绕过。知道如何出行吗?

最佳答案

您的使用方式不正确。 requestAnimationFrame 返回一个 id,您在调用 cancelAnimationFrame 时使用该 ID。

var id = requestAnimationFrame();

...

cancelAnimationFrame( id );

关于javascript - 如何用cancelAnimationFrame停止旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44356914/

相关文章:

javascript - polymer 0.5及生产用途

php - 意外 token 非法

javascript - 从 Angular JS 中的 aws s3 存储桶下载文件

javascript - Three.js - 如何判断一个点是否在一条直线上?

javascript - 使用 Three.js 组织 html5 webgl canvas 动画中的对象

javascript - 使用 Promise 通过外部函数从 DOM 检索属性

javascript - 如何制作出像这样的页面效果呢?

javascript - 克隆后 div 内的按钮不起作用

jQuery 平滑内容滑动

javascript - ThreeJS 不会转换任何阴影