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');
        }
      });

      }
    });

これらは同じオブジェクトの2つのネストされた遷移にすぎませんが、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 に答える