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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.12.2008, 18:11
mitien вне форума Посмотреть профиль Отправить личное сообщение для mitien Найти все сообщения от mitien
  № 1  
Ответить с цитированием
mitien
 
Аватар для mitien

Регистрация: Dec 2005
Сообщений: 94
По умолчанию програмно созданная траектория движения

Вопрос, может кто сталкивался.
как заствить мувик двигаться по програмно созданной траектории с помощью curveTo?
Что то вроде пенальти в футболе, когд амяч закручивают или его ветром сдувает

Старый 21.12.2008, 18:16
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
http://bezier.ru/
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 21.12.2008, 18:29
mitien вне форума Посмотреть профиль Отправить личное сообщение для mitien Найти все сообщения от mitien
  № 3  
Ответить с цитированием
mitien
 
Аватар для mitien

Регистрация: Dec 2005
Сообщений: 94
Как рисовать я знаю, а вот как прикрутить к этому движение?
+это под АС3

Старый 21.12.2008, 18:41
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Вроде и бы под AS2 было, ну Path.as точно. Напишите Ивану Дембицкому.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 21.12.2008, 19:24
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 5  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
и даже под AS
вот нашлось у Роста в архивах
Код AS1/AS2:
// author: Ivan Dembicki
Path = function () {
	this.path_points=arguments.toString(), this.path_length=0;
	var x_array = [], y_array = [], k = 0, i, len = arguments.length, x0 = arguments[0] || 0, y0 = arguments[1] || 0, x1, y1, x2, y2, ln, o, a1, a2, a3, a4, a, b, c, d, e, a2t, sa;
	var s = Math.sqrt, l = Math.log, p = Math.pow;
	for (i=2; i<len; i += 4) {
		x1=arguments[i] || 0, y1=arguments[i+1] || 0, x2=arguments[i+2] || 0, y2=arguments[i+3] || 0, ln=this["ln"+k++]=[{_y:y0, _x:x0}, {_y:y1, _x:x1}, {_y:y2, _x:x2}];
		// ASSetPropFlags(this, "ln"+(k-1), 7, 1)
		o=ln[3]={}, a1=o.a1=x0-2*x1+x2, a2=o.a2=y0-2*y1+y2, a3=o.a3=x0-x1, a4=o.a4=y0-y1, a=o.a=4*(a1*a1+a2*a2), b=o.b=-8*(a1*a3+a2*a4), c=o.c=4*(a3*a3+a4*a4), e=o.e=Math.sqrt(c), d=s(c+b+a), sa=s(a), a2t=a*2, ln[4]=(2*sa*(d*(b+a2t)-e*b)+(b*b-4*a*c)*(l(2*e+b/sa)-l(2*d+(b+a2t)/sa)))/(8*p(a, (3/2)));
		this.path_length += ln[4];
		x0=x2, y0=y2;
	}
	this.segments = k--;
 
	_root.lineStyle(0, 0, 30), _root.moveTo(this.ln0[0]._x, this.ln0[0]._y), _root.curveTo(this.ln0[1]._x, this.ln0[1]._y, this.ln0[2]._x, this.ln0[2]._y), _root.curveTo(this.ln1[1]._x, this.ln1[1]._y, this.ln1[2]._x, this.ln1[2]._y);
	_root.curveTo(this.ln2[1]._x,this.ln2[1]._y,this.ln2[2]._x,this.ln2[2]._y);
 
};
 
tmp = Path.prototype={};
 
tmp.getPointByPosition = function(poz) {
 
	if (poz<0 || poz>this.path_length) {
		return {_x:this.ln0[0]._x, _y:this.ln0[0]._y};
	}
 
	if (this.segments<1) {
		return false;
	}
 
	var i = 0, ln, len = 0, ff = 0;
 
	for (i; i<=this.segments; i++) {
		ln=this["ln"+i], len += ln[4];
		if (len>poz) {
			ff = (poz-(len-ln[4]))/ln[4];
			break;
		}
	}
 
	var s = Math.sqrt, l = Math.log, p = Math.pow, abs = Math.abs;
 
	var fn = function (ff) {
	var o = ln[3], a1 = o.a1, a2 = o.a2, a3 = o.a3, a4 = o.a4, a = o.a, b = o.b, c = o.c, e = o.e, i = 1, st = 1, f_l = ln[4], t_l = ff*f_l, max_i = 100, d, sa, a2i;
	while (max_i--) {
		d=s(c+i*(b+a*i)), sa=s(a), a2i=a*2*i, f_l=(2*sa*(d*(b+a2i)-e*b)+(b*b-4*a*c)*(l(2*e+b/sa)-l(2*d+(b+a2i)/sa)))/(8*p(a, (3/2)));
	if (abs(f_l-t_l)<.000001) {
	return i;
	}
	st /= 2, i += f_l<t_l ? st : f_l>t_l ? -st : 0;
	}
	return i;
	};
 
	var f = fn(ff), p0 = ln[0], p1 = ln[1], p2 = ln[2], e = 1-f, ee = e*e, ff = f*f, b = 2*f*e;
	return {_x:p2._x*ff+p1._x*b+p0._x*ee, _y:p2._y*ff+p1._y*b+p0._y*ee};
 
};
 
delete tmp;
//EXAMPLE
_root.createEmptyMovieClip("mc",0);
_root.mc.lineStyle(5,0xFF0000,100);
_root.mc.lineTo(.2,0);
_root.mc.tween_path = new Path(0, 0, 100, 0, 100, 100, 100, 200, 450, 380, 0, 300, 0, 0);
_root.mc.speed = _root.mc.path_position=0;
_root.mc.onEnterFrame = function() {
 
	if (this.path_position>this.tween_path.path_length) {
		this.path_position = 0;
	}
 
	this.path_position += this.speed += .01;
	var poz = this.tween_path.getPointByPosition(this.path_position);
	this._x=poz._x, this._y=poz._y;
 
};

Старый 22.12.2008, 01:44
mitien вне форума Посмотреть профиль Отправить личное сообщение для mitien Найти все сообщения от mitien
  № 6  
Ответить с цитированием
mitien
 
Аватар для mitien

Регистрация: Dec 2005
Сообщений: 94
Спасибо, вроде разобрался, но не получилось остановить движение в конце траектории

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

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

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


 


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


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