Показать сообщение отдельно
Старый 11.07.2013, 12:48
cezar12 вне форума Посмотреть профиль Отправить личное сообщение для cezar12 Найти все сообщения от cezar12
  № 1  
Ответить с цитированием
cezar12

Регистрация: Jan 2008
Сообщений: 15
По умолчанию Соединить точки линиями

Есть мини игра, где надо соединять объекты линиями. В некоторых случаях возникает ошибка.
Код:
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);
	}
}


Последний раз редактировалось iNils; 11.07.2013 в 13:35.