2017-04-04 50 views
0

所以我有一大堆的阵列看起来像的,使用不同的阵列每次调用一个函数的JavaScript

var arr = [characterA, characterB, characterC]; 
var arr2 = [characterC, characterA, characterB]; 
var arr3 = [characterB, characterC, characterA]; 

和我做这些事情(什么并不重要),但它看起来像,

arr[0].alignTo(columnLeft, Phaser.LEFT_CENTER); 
    arr[1].alignIn(columnLeft, Phaser.CENTER); 
    arr[2].alignTo(columnLeft, Phaser.RIGHT_CENTER); 

这是一个叫做toggle()像这样的功能中,

toggle:function() { 
    var arr = [characterA, characterB, characterC]; 
    var arr2 = [characterC, characterA, characterB]; 
    var arr3 = [characterB, characterC, characterA]; 

    arr[0].alignTo(columnLeft, Phaser.LEFT_CENTER); 
    arr[1].alignIn(columnLeft, Phaser.CENTER); 
    arr[2].alignTo(columnLeft, Phaser.RIGHT_CENTER); 

    timer.add(1000, this.toggle, this); 
    }, 

那么我现在要做的,是基本上,我每次调用这个函数。我使用不同的一组arrays,所以在我正在做的那一刻arr[0]我该怎么写,以便每次调用该函数时都使用arr2,然后在那之后arr3然后再回到arr等等。

我一直在为此战斗一天左右。

+0

你的意思是,每次调用'toggle'都会使我们*其中一个*(arr'),下一次调用将使用下一个('arr2'),下一次调用将使用下一个'arr3')? –

+0

抱歉,可能对其进行了错误的解释。正如你所说的那样@ T.J.Crowder – PourMeSomeCode

+0

这三个调用,如'alignTo'等应该使用相同的数组,只是不同的索引。所以就像'alignTo'用户数组中的第一个项目,第二个使用数组中的第二个项目,所以第四 – PourMeSomeCode

回答

1

如果你的意思是每次调用toggle将我们他们(arr)的一个,接下来的调用将使用next(arr2),并在下次调用将使用下一个(arr3),你可以把它们在一个阵列,并记住下一个数组的索引使用方法:

// Outside the function 
var arr = [characterA, characterB, characterC]; 
var arr2 = [characterC, characterA, characterB]; 
var arr3 = [characterB, characterC, characterA]; 
var arrays = [arr, arr2, arr3]; 
var index = 0; 

// In the function: 
toggle:function() { 
    var thisArray = arrays[index]; 
    index = ++index % arrays.length; // Wraps around if necessary 
    thisArray[0].alignTo(columnLeft, Phaser.LEFT_CENTER); 
    thisArray[1].alignIn(columnLeft, Phaser.CENTER); 
    thisArray[2].alignTo(columnLeft, Phaser.RIGHT_CENTER); 

    timer.add(1000, this.toggle, this); 
}, 

如果的阵列内toggle自身建设,我们只是不断index之外,只建立我们需要的数组:

// Outside the function 
var index = 0; 

// In the function: 
toggle:function() { 
    var arr; 
    switch (index) { 
     case 0: 
      arr = [characterA, characterB, characterC]; 
      break; 
     case 1: 
      arr = [characterC, characterA, characterB]; 
      break; 
     case 2: 
      arr = [characterB, characterC, characterA]; 
      break; 
    } 
    index = ++index % 3; // Wraps around if necessary 
    arr[0].alignTo(columnLeft, Phaser.LEFT_CENTER); 
    arr[1].alignIn(columnLeft, Phaser.CENTER); 
    arr[2].alignTo(columnLeft, Phaser.RIGHT_CENTER); 

    timer.add(1000, this.toggle, this); 
}, 
+0

我确实需要在切换方法内建立数组,这工作感谢兄弟! 'index = ++ index%arrays.length;'应该是'index = ++ index%arr.length;' – PourMeSomeCode

+0

@PourMeSomeCode:不,它不应该。 :-)它应该是'3',我只是忘了更改它的第二个代码示例(现在修复)。它与我们拥有的案例数量有关,而不是“arr”内的项目数量(尽管巧合的是,这两个值都是3)。 –

相关问题