【问题标题】:Fabric JS : How to animate the top and left position of a triangle simultaneously? + animate bugFabric JS:如何同时为三角形的顶部和左侧位置设置动画? + 动画错误
【发布时间】:2014-07-27 04:15:25
【问题描述】:

我的问题似乎相对简单,但在谷歌上搜索了几个小时后,我没有得到更多信息。

基本上我想使用 animate 函数将两个三角形的中心(或一个开始)围绕另一个三角形移动。我想它应该分三个步骤表示一个动画,但我无法得到一些工作。

请注意,这是我第一次使用它,恐怕对你们中的某些人来说这听起来很明显。

另外我不确定我是否正确设置了一些东西(基于示例并且只为一个属性设置动画),因为动画不想启动:/

function createTriangle() {
  var canvas2 = new fabric.Canvas('myCanvas');

  var triangle = new fabric.Triangle({
    width: 300, height: 300, fill: 'red', left: 30, top: 0
  });

  triangle.animate('top', '200', {
    duration: 1000,
    onChange: canvas2.renderAll.bind(canvas2),
    onComplete: function() {
      //callback code goes here
    }
  });

  canvas2.add(triangle);
}

有人知道它为什么不工作吗?

谢谢

【问题讨论】:

    标签: fabricjs animated


    【解决方案1】:

    简单示例:

      triangle.animate({left: 100, top: 100 }, {
          duration: 1000,
          onChange: canvas.renderAll.bind(canvas),
       });
    

    【讨论】:

      【解决方案2】:

      我不是 Fabric 用户,所以也许有更好的方法,但是对 .animate() 的调用是非阻塞的,所以你可以连续请求两个属性的动画:

      triangle.animate('top', '+=100', {
        duration: 1000,
        onChange: canvas.renderAll.bind(canvas),
      });
      
      triangle.animate('left', '+=100', {
        duration: 1000,
        onChange: canvas.renderAll.bind(canvas),
      });
      

      这是jsbin 上的演示。我在 Fabric docs 上读到,这种使用 onChange 的方式会导致性能不佳。如果是这种情况,您可以使用requestAnimationFrame,或编写自己的循环代码

      【讨论】:

      • 感谢您的解释。然而这很奇怪,只要我想在加载时触发事件而不是使用 onclick 按钮它就不起作用..我很困惑。这是否意味着我必须通过 onClick 事件触发动画?您的示例运行良好。但不幸的是,并没有真正解决我的问题。还是谢谢
      • 其实我一直在寻找处理 JS 但是用它来实现这样的东西看起来很痛苦..
      • @user1880789 只需安排你的事件运行 onDomLoaded ;) Fabric 需要 Canvas 元素在 DOM 中
      • 你没有描述你的问题,没有提供一个沙箱来重现它,只是抱怨你的代码没有按照你的意愿工作。这不是 StackOverflow 的工作方式:您发布问题,我们解决它,然后我们就完成了。由您来理解答案并为您的项目编写代码,因为这是您的工作。不理解/接受所提供的答案而只是询问代码是不公平的
      • 哎呀...我刚刚看到出了什么问题。很明显:/绝对是我睡觉的时间。谢谢老兄。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 2014-06-05
      • 1970-01-01
      • 2020-08-17
      • 2013-01-12
      相关资源
      最近更新 更多