所以我有一堆看起来像的数组,
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
之后{ {1}}然后返回arr
等等。
我已经和它斗争了一天左右。
答案 0 :(得分:1)
如果您的意思是每次拨打toggle
,我们一个(arr
),下一次呼叫将使用下一个(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);
},