Я думаю, что проблема в этой строке:
M[i] = P.splice(randomPos, 1);
Вы присваиваете M [i] (массив mc) со значением из P (массив точек), поэтому M [i] = массив сточка, а не mc.
Если вы хотите избежать таких проблем, вы можете использовать векторы вместо массивов.Он более эффективен и также должен содержать тип, который вы объявили. Вектор класса Docs .
Чтобы использовать вектор вместо:
var P:Array = [...];
var M:Array = [...];
Do:
var P:Vector.<Point> = new <Number>[...];
var M:Vector.<MovieClip> = new <MovieClip>[...];
А остальное просто какмассивы (pop, push, slice, ...)
Чтобы удалить элемент из M, просто соедините M, я не понимаю, почему вам нужно выполнить итерации по M.
M.splice(randomPos, 1);