2017-04-03 8 views
0

基本的には、関数が呼び出されるたびに文字の位置を変更したいと考えています。関数がJavaScriptと呼ばれるたびに配列の次の項目に移動します。

私は私の関数を呼び出すよどこだから、これはそれがtimer.add

toggleCurrentCharacter:function() { 
     var characterArr = [characterA, characterB, characterC]; 
     var characterPosArr = [LEFT_CENTER, CENTER, RIGHT_CENTER]; 

     characterA.alignIn(columnLeft, Phaser.CENTER); 
     characterB.alignTo(columnLeft, Phaser.RIGHT_CENTER); 
     characterC.alignTo(columnLeft, Phaser.LEFT_CENTER); 

     console.log("Testing"); 

     timer.add(2000, this.toggleCurrentCharacter, this); 
} 

、このようになります呼び出して、

timer = game.time.create(false); 
timer.add(2000, this.toggleCurrentCharacter, this); 
timer.start(); 

そして、私の関数であるだけで確認してください私の機能がエンドレスに走行しつつあります。

関数が実行されるたびに、私が持っているスプライトの配置を変更したいので、RIGHT_CENTERCENTERなどが表示されます。

私は繰り返しを行うために配列が必要だと思っていましたが、関数を呼び出すたびにどのように関数が呼び出されるのか理解できず、Phaser.RIGHT_CENTERが繰り返し実行されます。 Phaser.RIGHT_CENTERは今やPhaser.CENTERのように見えます。

おかげ

+0

再帰を?現在のposをグローバル変数に保存しますか?私の最初の2つのアイデア。 –

答えて

1

あなたは機能と呼ばれる回転書くことができます。

function rotate(array) { 
    return array.splice(1).concat(array); 
} 

または他の順列の任意の数:

function rotate(array) { 
    return array.concat(array.shift()); 
} 
+0

これはただ一度それを並べ変えるようであるか。私がそれを呼び出し続けても、それは一度それを再注文します。または少なくとも、特定の方法でそれを再注文するだけです。私がそれを呼び出すたびに、私はそれを繰り返し実行しようとしています。したがって、例です。 [1,2,3]それは[3,2,1]であり、それは[2,3,1]であり、再び[1,2,3]に戻る – PourMeSomeCode

関連する問題