Показать сообщение отдельно
Старый 05.02.2006, 19:27
Erya вне форума Посмотреть профиль Отправить личное сообщение для Erya Найти все сообщения от Erya
  № 7  
Ответить с цитированием
Erya
 
Аватар для Erya

Регистрация: Feb 2006
Адрес: Рига
Сообщений: 42
Код:
var allPoints:Array = new Array();

for (var i:Number = 1; i <= 5; i++) {
	// Создаём мувик кидаём его кдуанить на поле
	var tempMovie:MovieClip = _root.createEmptyMovieClip('point' + i, _root.getNextHighestDepth());
	with(tempMovie) {
		lineStyle(1, '0x000000');
		lineTo(10, 0);
		lineTo(10, 10);
		lineTo(0, 10);
		lineTo(0, 0);
		_x = random(Stage.width);
		_y = random(Stage.height);
	}
	// В массив, который содержит все мувики пихаем текущий.
	allPoints.push(tempMovie);
}
// После цикла - 5 мувиков, и массив, с сылками на них.

// Функция для определения манимального расстояния. Возвращает ссылку на мувик.
// Принимает массив мувиков, а также точку, до которой нужно считать растояние.
function minDistance(movies:Array, x:Number, y:Number):MovieClip {
	var closestMovie:MovieClip = movies[0];
	var minDistance:Number = 9999;
	for(var i:Number = 0; i < movies.length; i++) {
		var currentMovie:MovieClip = movies[i];
		var distance:Number = Math.sqrt(((x - currentMovie._x)*(x - currentMovie._x)) + ((y - currentMovie._y)*(y - currentMovie._y)));
		if (distance < minDistance) {
			closestMovie = currentMovie;
			minDistance = distance;
		}
	}
	return closestMovie;
}

// Дальше идёт пример использования функции...
var line:MovieClip = _root.createEmptyMovieClip('line', _root.getNextHighestDepth());
function drawLine(Void):Void {
	var movieToLine:MovieClip = minDistance(allPoints, _root._xmouse, _root._ymouse);
	with(line) {
		clear();
		lineStyle(1, '0xFF0000');
		moveTo(_root._xmouse, _root._ymouse);
		lineTo(movieToLine._x, movieToLine._y);
	}
}

setInterval(drawLine, 20);
Держи, сунь в кадр на сцене и разбирайся!