По сути, у меня есть две процедуры: одна - проверка столкновения CDK, а другая - общая проверка массива.Они оба внутри одного и того же таймера.Существует два массива - collisionList и MasterArray, и объект находится в них обоих.
Сначала процедура коллизии:
var collisions:Array = collisionList.checkCollisions();
for(var i:uint = 0; i < collisions.length; i++)
{var firstShape: Sprite = collisions [i] .object1;
if (firstShape.name == "Obj1") {
коллизий [i] .object1.x = -20;collisionList.removeItem (столкновения [I] .object1);}}
Тогда у меня есть:
for each(var i in MasterArray) {
Shape1:Sprite = MasterArray[i];
if (ix <0) {removeChild (Shape1);MasterArray.splice (это, 1);} </p>
}
Но это не работает.Это дает мне огромный сбой.Если я не изменю объект x в процедуре столкновения, в тот момент, когда он перемещается из экрана с помощью любой другой функции, он исчезает, и все хорошо.
Однако, даже если я просто коснусь егоподпрограмма столкновения (например, если я заявляю, что я хочу, чтобы ее х равнялся 20), в следующий раз, когда что-то случится и переместит его в х <0, я получу тот же сбой. </p>
Если я ничего не делаюпри проверке MasterArray и выполнении removeChild при проверке коллизий, она тоже работает нормально.
Это ошибка, которую я получаю в любом случае:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
в flash.display :: DisplayObjectContainer/ removeChild () в game2_Scene1_fla :: MainTimeline / TimeCheck () в flash.utils :: Timer / _timerDispatch () в flash.utils :: Timer / tick ()
Спасибо!