0

我想将一些具有可变持续时间的 kineticJS 转换排队,例如:

scrub.transitionTo({
      x:400,
      duration: 4,
      callback: function() {

        console.log('complete 400');
        scrub.transitionTo({
        x:500,
        duration: 1,
        callback: function() {
          console.log('complete 100');
        }
      });

      }
    });

这些只是同一对象的两个嵌套转换,但我想为 10 个或更多嵌套回调自动执行此过程。

4

1 回答 1

0

您可以创建一个新对象并将转换数据放入其中。

 var transition1 = {
     x:400,
     duration: 4,
     callback: function(){
        console.log('complete 400');
         ....
     }
 };

var transition2 = {
   x:500,
   duration: 1,
   callback: function() {
        console.log('complete 100');
   }
};

然后,您可以创建一个 while 循环来调用转换,而无需回调。

但是由于您确实需要回调,因此您需要创建一个回调将调用的函数并检查条件。

 function callFunction(scrub, numberOfExecutions){
     if(condition == myCondition){
         scrub.transitionTo(transition1);
         numberOfExecutions--;
     }
     else if(condition2 == myCondition2){
         scrub.transitionTo(transition2);
         numberOfExecutions--;
     }
     if(numberOfExecutions < 1) return 0;
     else return 0;
 };

请注意,执行这些嵌套递归调用是不明智的,因为某些浏览器会自动认为脚本陷入无限循环并且不会执行。

于 2012-12-24T18:34:33.867 回答