一个元素上的多个补间

时间:2017-01-22 23:36:14

标签: javascript easeljs tweenjs

我有一个通过补间慢慢收缩的栏。我希望有两个按钮来控制这个条的方向,这样如果我点击“向上”按钮。酒吧将开始攀爬到它的原始形式和' Down'会使它再次开始萎缩。

var bar1Command = bar1.graphics.drawRect(75, 130, 10, 130).command;
var tween1 = createjs.Tween.get(bar1Command, { loop: false, paused: false }).to({ h: 0, y: 260 }, 10000);
var tween2 = createjs.Tween.get(bar1Command, { loop: false, paused: true }).to({h: 130, y: 130}, 10000);

function up() {
  tween1.setPaused(true);
  tween2.setPaused(false);
}

function down() {
  tween1.setPaused(false);
  tween2.setPaused(true);
}

https://jsfiddle.net/rgg8p9k6/

我不确定一个补间是否有可能影响另一个补充对象的状态,因为当我点击“向上”时酒吧跳到原来的位置。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用override:true中的createjs.Tween.get()选项停止现有补间并将其替换为其他补间。

另请注意,因为到终点的距离取决于它们何时改变方向,所以您需要相应地调整新补间的持续时间,以保持速度不变:

var duration = 10000;

function up() {
  duration = 10000 * ((130 - bar1Command.h) / 130);
  tween1 = createjs.Tween.get(bar1Command, { loop: false, override:true }).to({ h: 130, y: 130 }, duration);
}

function down() {
  duration = 10000 * (bar1Command.h / 130);
  tween1 = createjs.Tween.get(bar1Command, { loop: false, override:true }).to({ h: 0, y: 260 }, duration);
}

工作示例:https://jsfiddle.net/pc4rjnLg/1/