首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按钮单击上的cancelAnimationFrame不起作用

按钮单击上的cancelAnimationFrame不起作用
EN

Stack Overflow用户
提问于 2016-05-10 15:26:24
回答 1查看 269关注 0票数 0

我试图动画的左或右旋转按钮点击。不幸的是,当我点击左边旋转的按钮时,它会自己编译,变得越来越快。右击也会发生同样的情况。需要多次点击对方的按钮,才能否定旋转。

我希望左边的按钮取消右边的旋转,然后直接进入左转,反之亦然。现在,您必须在每次按下初始按钮时单击相反的按钮时间。

代码如下:

代码语言:javascript
复制
var initialFrame = function () {
  requestAnimationFrame(initialFrame);
  renderer.render(scene, camera);
};   

var rotateLeft = function () {
  requestAnimationFrame(rotateLeft);
  wrap.rotation.y += -0.02;
  wrapBack.rotation.y += -0.02;
  renderer.render(scene, camera);
};

var rotateRight = function () {
  requestAnimationFrame(rotateRight);
  wrap.rotation.y += 0.02;
  wrapBack.rotation.y += 0.02;
  renderer.render(scene, camera);
};

initialFrame()

$("#left-button").click(function() {
  cancelAnimationFrame(rotateRight);
  rotateLeft();  
});

$("#right-button").click(function() {
  cancelAnimationFrame(rotateLeft); 
  rotateRight();
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-10 15:47:11

我认为最好将所有动画登录到呈现循环和按钮事件中的控件中。

代码语言:javascript
复制
var step =0;
var initialFrame = function () {
  wrap.rotation.y += step;
  wrapBack.rotation.y += step;
  requestAnimationFrame(initialFrame);
  renderer.render(scene, camera);
  step=0; // if you want to rotate one step on a click (remove this for infinite rotation)
};   

var rotateLeft = function () {
  step=-0.02;
};

var rotateRight = function () {
  step=0.02;
};


$("#left-button").click(function() {
   rotateLeft();  
});

$("#right-button").click(function() {
   rotateRight();
});

initialFrame();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37142856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档