Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 RangeError:错误#1125:索引0超出范围0_Actionscript 3_Actionscript_Range_Coordinates - Fatal编程技术网

Actionscript 3 RangeError:错误#1125:索引0超出范围0

Actionscript 3 RangeError:错误#1125:索引0超出范围0,actionscript-3,actionscript,range,coordinates,Actionscript 3,Actionscript,Range,Coordinates,只是一直在尝试随机化一堆按钮坐标,并成功地管理使用此代码 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:in

只是一直在尝试随机化一堆按钮坐标,并成功地管理使用此代码

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);
大多数checkAnswers函数都与我想的问题无关,它只是通过检查两件事情是否匹配来显示函数是如何工作的,需要发生一些事情

当我运行此程序时,按钮会像正常情况一样随机化。。。但是当我得到一个正确的答案时,我的输出就会出现这个错误

RangeError:错误#1125:索引0超出范围0

…他们不再随机化了

有什么想法吗?非常感谢

编辑

根据Aarons的建议,我修改的代码是

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);
}
它现在可以无缝工作,没有范围错误


谢谢!大家好。

每次都需要重新创建坐标,因为在拾取随机位置时,要使用
splice()
删除所有点

例如,您可以创建一个函数来创建可能的坐标,而不是使用顶级
coordinates
var:

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.<Pont>):void {
    // Same as before
}
函数createCoordinatePositions():Vector。{
还新[
新点(44420),
新点(270420),
新点(44550),
新点(270550)
];
}
然后修改随机位置函数以获取可能坐标的参数:

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.<Pont>):void {
    // Same as before
}
函数位置区域坐标(对象:DisplayObject,坐标:Vector.):void{
//和以前一样
}
现在要随机定位所有按钮,首先创建一个可能坐标的新列表,并将其传递到每个随机定位调用中:

function positionButtonsRandomly():void {
    var coordinates:Vector.<Point> = createCoordinatePositions();
    positionAtRandomCoordinate(answerButtons, coordinates);
    positionAtRandomCoordinate(answerButtons_2, coordinates);
    positionAtRandomCoordinate(answerButtons_3, coordinates);
    positionAtRandomCoordinate(answerButtons_4, coordinates);
    // By here the coordinates.length = 0
}
函数位置按钮nsrandomly():void{
变量坐标:Vector.=createCoordinatePositions();
位置和坐标(应答按钮、坐标);
位置和坐标(应答按钮2,坐标);
位置和坐标(应答按钮3,坐标);
位置和坐标(应答按钮4,坐标);
//此处坐标为0.length=0
}

第二次执行该代码时,您的
坐标
数组为空!别忘了你使用了坐标。splice()…嘿,Aaron,非常感谢你在我的这个项目上给予的帮助。我已经对代码做了这些调整,而且每当我得到正确答案时,我似乎仍然会得到范围错误。有什么想法吗?应该行得通,发布你的更新代码。将整个内容放在一个可以调用的函数中可能会有所帮助,例如
positionbuttonnsrandomly()
。我用一个例子更新了我的答案。刚刚看到你对答案的修改,现在它在一个函数中,checkAnswers可以正确地调用它,这对我来说很有意义。非常感谢你的帮助,亚伦,你真是个天才。