就一直試圖隨機化一堆按鈕的座標和管理時,這種成功使用此代碼...的RangeError:錯誤#1125:索引0是出0
var coordinates:Vector.<Point> = new <Point>[
new Point(44, 420),
new Point(270, 420),
new Point(44, 550),
new Point(270, 550)
];
function positionAtRandomCoordinate(object:DisplayObject):void {
var index:int = Math.random() * coordinates.length;
var coordinate:Point = coordinates.splice(index, 1)[0];
object.x = coordinate.x;
object.y = coordinate.y;
}
positionAtRandomCoordinate(answerButtons);
positionAtRandomCoordinate(answerButtons_2);
positionAtRandomCoordinate(answerButtons_3);
positionAtRandomCoordinate(answerButtons_4);
此代碼的工作,當我的範圍開始遊戲,隨機選擇按鈕的座標。
我遇到的問題是每次有正確答案時我都希望這些座標隨機化。
我對這個代碼...
function checkAnswers() {
if (questionColour == answerColour){
textLabeller(textBox);
colourLabeller(textBox);
updateScore();
positionAtRandomCoordinate(answerButtons);
positionAtRandomCoordinate(answerButtons_2);
positionAtRandomCoordinate(answerButtons_3);
positionAtRandomCoordinate(answerButtons_4);
if (score > sharedData.data.highScore){
sharedData.data.highScore = score;
sharedData.flush();
updateHiScore();
}
SecondsToCountDown = 6;
}else {
trace ("colours do not match");
CountDownTimer.stop();
gotoAndStop(3);
}
}
大多數checkAnswers功能無關,我覺得這個問題,它只是顯示的功能是如何工作通過檢查兩件事情配合,有什麼需要發生。
當我運行此,按鈕隨機化像正常......但是當我得到一個正確的答案我爬輸出這個錯誤
的RangeError:錯誤#1125:索引0是超出範圍0。
...而且他們不再隨機化。
有什麼想法嗎?將不勝感激。
編輯
每阿倫斯建議,我修改後的代碼...
function createCoordinatePositions():Vector.<Point> {
return new <Point>[
new Point(44, 420),
new Point(270, 420),
new Point(44, 550),
new Point(270, 550)
];
}
function positionAtRandomCoordinate(object:DisplayObject, coordinates:Vector.<Point>):void {
var index:int = Math.random() * coordinates.length;
var coordinate:Point = coordinates.splice(index, 1)[0];
object.x = coordinate.x;
object.y = coordinate.y;
}
function positionButtonsRandomly():void {
var coordinates:Vector.<Point> = createCoordinatePositions();
positionAtRandomCoordinate(answerButtons, coordinates);
positionAtRandomCoordinate(answerButtons_2, coordinates);
positionAtRandomCoordinate(answerButtons_3, coordinates);
positionAtRandomCoordinate(answerButtons_4, coordinates);
}
然後我加入到我的checkAnswers()函數...
positionButtonsRandomly();
現在無誤差地工作。
謝謝!所有的冰雹亞倫。
第二次執行該代碼時,「座標」數組爲空!不要忘記你已經使用'coordinates.splice()'... – akmozo