Есть мини игра, где надо соединять объекты линиями. В некоторых случаях возникает ошибка.
Код:
ArgumentError: Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта.
at flash.display::DisplayObjectContainer/removeChild()
at quiz_fla::MainTimeline/makeThread()
Никак не могу разобраться, прошу помощи!
Код AS3:
function makeThread(e:MouseEvent) {
// нажатие на объект из первого столбца
var dot = e.currentTarget;
if(dot.line) {
removeChild(dot.line);
dot.line = null;
if(dot.line)
dot.line.num2 = null;
}
addEventListener(Event.ENTER_FRAME, drawLine);
function stopDrawing(e:MouseEvent) {
// Повторное нажатие мыши
for(var i:int = 0;i<dots2.length;i++) {
if(dots2[i].hitTestPoint(mouseX,mouseY,true)) {
// Если линия подведена к объекту из второго столбца
if(dots2[i].line) {
removeChild(dots2[i].line);
dots2[i].line = null;
if(dots2[i].line)
dots2[i].line.num1 = null;
}
var newLine:MovieClip = sprite;
dot.line = newLine;
dots2[i].line = newLine;
newLine.num1 = dot;
newLine.num2 = dots2[i];
lines.push(newLine);
sprite = null;
break;
}
}
if(sprite) {
removeChild(sprite);
sprite = null;
}
removeEventListener(MouseEvent.MOUSE_DOWN, stopDrawing);
removeEventListener(Event.ENTER_FRAME, drawLine);
}
function drawLine(e:Event) {
if(sprite) {
removeChild(sprite);
sprite = null;
}
sprite = new MovieClip();
sprite.graphics.lineStyle(4,0x003366,0.7);
sprite.graphics.moveTo(dot.x+dot.width/2,dot.y+dot.height/2);
sprite.graphics.lineTo(mouseX,mouseY);
addChild(sprite);
addEventListener(MouseEvent.MOUSE_DOWN, stopDrawing);
}
}