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

Регистрация: Sep 2017
Сообщений: 21
По умолчанию Случайные координаты движения автофигуры

Добрый день.
Помогите с решением.

Есть скрипт программно создающий и двигающий фигуру - по определенным координатам.
Но эти координаты жестко определены.

Как заставить координаты - определяться случайным образом (чтобы при каждом запуске файла - движение фигуры было непохоже на предыдущее) ?

Код AS3:
//Создаём квадрат
var quad:Shape = new Shape();
quad.graphics.beginFill(0x000000);
quad.graphics.drawRect(0, 0, 32, 32);
addChild(quad);
 
var points:Array = [ new Point(10, 10), 
                     new Point(200, 100), 
                     new Point(50, 300),
					 new Point(300, 300),
					 new Point(0,0),
					 new Point(200, 10)]; //Перечисляем через запятую любое кол-во точек
 
var position:Number = 0; // позиция анимации
var speed:Number = 1; // пикселей в кадр
var distance = calculateDistance(points); // Общая длина пути
 
this.addEventListener(Event.ENTER_FRAME, update);
 
function calculateDistance(arr:Array):Number
{
	var distance = 0;
	for(var i:int = 1; i < arr.length; i++)
		distance += Point.distance(arr[i] , arr[i-1]);
	return distance;
}
 
function update(e:Event):void
{ 
	//Эта функция будет вызываться каждый кадр
	if(position > distance)
		return;
	var distanceSum:Number = 0;
 
    for(var i:int = 1; i < points.length; i++)
	{
		var currDist = Point.distance(points[i], points[i-1]);
		if(distanceSum + currDist > position) //Мы нашли промежуток, в котором находимся
		{
			var pos:Point = Point.interpolate(points[i], points[i-1], (position - distanceSum)/currDist);
			quad.x = pos.x; // quad меняем на кастомную фигуру
			quad.y = pos.y;
			break;
		}
		distanceSum += currDist;
	}
 
	position += speed;
}