我工作的一個遊戲,在我的遊戲用戶獲得武器(紙杯蛋糕)在整個水平。我有一個按鈕,玩家點擊更改爲下一個蛋糕(獲得的武器存儲在一個陣列中)。通過遊戲對象的數組,而不顯示重複的導航對象
這裏是我的問題:如果玩家獲得2個黃蛋糕,1個紅色蛋糕,和2層藍色的蛋糕,我怎麼通過數組導航不顯示兩次相同的蛋糕? 我的按鈕看起來好像它不改變的武器,當代碼是,它要在陣列中的下一個元素,但它是相同的武器[黃色蛋糕,黃色蛋糕,紅色蛋糕,藍色蛋糕,藍色的蛋糕。
public function CupcakeChangeButton(e: MouseEvent) {
cakeButtonCounter++;
//Make sure the cakeButtonCounter never exceeds the amount of
//elements in array
if (cakeButtonCounter >= CupcakesArray.length - 1) {
cakeButtonCounter = 0;
}
//NOTE: may need function called "cupcake count", this function should
//be called at the beginning of THIS function and in the constructor function
//Should count the amount of cupcakes and maybe set wasSeen Elements to No
/*
The switch statment makes its decisions based on the type of cupcake
is the current elment. The current element is represented by
"cakeButtonCounter" (CupcakesArray[cakeButtonCounter])
The if statements decides if the cupcake has been seen already.
If it hasnt been seen, it sets the button's text box to show how many of
those kind of cupcakes are left.
After the amount of cupcakes of that type is shown in the text box,
the "unshift" method is used to place "yes" in the first element, of it's
own Array type, WITHIN THE WAS SEEN ARRAY.......confusing!!!!!!
Example:
wasSeen.PinkCupcake.unshift("yes") = wasSeen.PinkCupcake[0] == "yes"
This is done so that we can keep track of what cupcakes has been seen
already
When the game is initialized the was seen elements are set to "no". So when
it's set to "yes", after being seen, The initial value,"no", is placed in the
next element. It's no longer needed, so we use the "splice" method to delete it
and HOPEFULLY, remove it from memory
The "else" block of code takes place if the cupcake has already been seen.
It increments the cakeButtonCounter so that the button will display the next
cupcake in the array, that has NOT been seen
After all decisions are made,(which cupcakes are next and which cupakes have
been seen)
Update the button's face by displaying the next cupcake that hasnt been seen
(button goes to and stop and next element)
NOTE: The ACTUAL case will be the dynamic var cupcake type (the NAME not the actual
cupcake)
*/
switch (CupcakesArray[cakeButtonCounter]) {
case "PinkCupcake":
if (wasSeen.PinkCupcake[0] == "no") {
CupcakeNavigationBox.countBox.text = "x" + PinkCupcakeCount;
wasSeen.PinkCupcake[0] == "yes";
trace("element change? " + wasSeen.PinkCupcake[0]);
} else {
cakeButtonCounter++;
trace("if yes...its starting that way " + wasSeen.PinkCupcake[0]);
}
break;
case "YellowCupcake":
if (wasSeen.YellowCupcake[0] == "no") {
CupcakeNavigationBox.countBox.text = "x" + YellowCupcakeCount;
wasSeen.YellowCupcake[0] == "yes";
} else {
cakeButtonCounter++;
}
break;
case "GreenCupcake":
if (wasSeen.GreenCupcake[0] == "no") {
CupcakeNavigationBox.countBox.text = "x" + GreenCupcakeCount;
wasSeen.GreenCupcake[0] == "yes";
} else {
cakeButtonCounter++;
}
break;
case "PurpleCupcake":
if (wasSeen.PurpleCupcake[0] == "no") {
CupcakeNavigationBox.countBox.text = "x" + PurpleCupcakeCount;
wasSeen.PurpleCupcake[0] == "yes";
} else {
cakeButtonCounter++;
}
break;
}
CupcakeNavigationBox.buttonFace.gotoAndStop(CupcakesArray[cakeButtonCounter]);
changeCupcake();
}
謝謝@ Klaster_1爲我清理。 – rtpenick