Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 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;
}

Создать новую тему   Часовой пояс GMT +4, время: 00:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:09.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.