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

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

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

Регистрация: Mar 2011
Сообщений: 17
Attention Наклон элипса сделанного на синусе.

Здраствуйте. Уже вторые сутки голову ломаю у меня движется электрон по элипсу таким способом:
Код AS1/AS2:
		_y = y0 + Math.sin(t += .05) * h;
		_x = x0 - Math.cos(t += .05) * a;
Я пытаюсь его размножить 29 раз (медь)
Код AS1/AS2:
while (i<29){
        obyekt = _root.fey.ba.attachMovie("a", "a" + i, i);
А вот дальше встал в ступор. Как мне их наклонять относительно центра (где в свою очередь находится атом)
В общем то понимаю как сделать несколько орбит. Но вот как наклонить относительно оси не понимаю.
Буду очень благодарен даже вашим соображениям если не коду.

Старый 05.04.2011, 20:34
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Нужно использовать класс Matrix.
А точнее, использовать программный эффект skew для копий:
Код AS1/AS2:
import flash.geom.Matrix;
var mtrx:Matrix = new Matrix();
//mtrx.b = -0.5;
mtrx.c = -0.5;
mc.transform.matrix = mtrx;
mc тут - это контейнер, где ваше движение организовано.
Если его нет, то нужно создать.
__________________
Идите первым!


Последний раз редактировалось mooncar; 05.04.2011 в 20:41.
Старый 05.04.2011, 20:48
xSx вне форума Посмотреть профиль Отправить личное сообщение для xSx Найти все сообщения от xSx
  № 3  
Ответить с цитированием
xSx

Регистрация: Mar 2011
Сообщений: 17
Спасибо за оперативность и интересный метод. Правда пока только электрон нечаянно сделал "элипсовидным" этим способом))) Но думаю разберусь. Заодно сейчас про класс сам почитаю может что уловлю для себя.
Извиняюсь за привычку не дочитывать. Сейчас попробую...


Последний раз редактировалось xSx; 05.04.2011 в 20:53.
Старый 05.04.2011, 20:53
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Ох уж, не знаю. Я вам дал наводку, думайте

Добавлено через 33 минуты
А вообще попробуйте-ка лучше сами орбиты подкорректировать, возможно так лучше будет.
Или просто повернуть (_rotation) контейнер с орбитальным движением.
__________________
Идите первым!


Последний раз редактировалось mooncar; 05.04.2011 в 21:38.
Старый 05.04.2011, 22:28
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 5  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Вот тут эллипсы орбит повернуты каждый последовательно на +12 с копейками градусов.
Шаг м/у появлениями на сцене задается в setTimeout.
level - чисто для регулировки скорости, берется из стандартного библиотечного регулятора, он не нужен по сути.

Да, исходник сохранен для CS4.
Код:
Код AS1/AS2:
h = 60;
a = 200;
y0 =250;
x0 = 200;
 
for (i = 1; i <= 29; i++) 
{
	var to:Number = setTimeout(setOrbita, i * 300, i);
}
 
function setOrbita (num:Number) 
{
	var mc:MovieClip = _root.attachMovie('electron_cont', 'orbita' + num, num, { _x:x0, _y:y0});
	mc._rotation = 12.413 * (num - 1) ;
	mc.t = 1 + 0.5 * num;
}
 
 
this.onEnterFrame = function  () 
{
	for (i = 1; i <= 29; i++) 
	{
		var mc:MovieClip = this['orbita' + i];
 
		mc.t = mc.t + 0.1 * (level / 100);
 
		if(mc)
		{
			mc.el._x = - Math.cos(mc.t) * a;
			mc.el._y =  Math.sin(mc.t) * h;	
		}
	}
};
В каждм приаттачиваемом контейнере орбиты сидит электрончик el
Вложения
Тип файла: rar cuprum.rar (15.2 Кб, 52 просмотров)
__________________
Идите первым!


Последний раз редактировалось mooncar; 06.04.2011 в 00:39.
Старый 06.04.2011, 01:22
xSx вне форума Посмотреть профиль Отправить личное сообщение для xSx Найти все сообщения от xSx
  № 6  
Ответить с цитированием
xSx

Регистрация: Mar 2011
Сообщений: 17
Воот вот это уже для моего разума подходит Большое спасибо завтра попробую оптимизировать для моей флэшечки и отпишусь

Добавлено через 18 часов 5 минут
Что то чувствуется ротэйт идёт относительно крайней части элипса, а не центра.. Хотя может я что то криво перенес
ой уже кое что придумал.

Добавлено через 18 часов 12 минут
что то даже правдоподобнее получается! Спасибо большое сейчас понастрою если какие проблемы отпишусь

Добавлено через 18 часов 27 минут
Что то по кругу летают Видимо из за того что в 4ый кадр затаскиваю...

Добавлено через 18 часов 44 минуты
Ох именно 31 фпс надо О_о толком правда не понял почему.


Последний раз редактировалось xSx; 06.04.2011 в 19:28.
Создать новую тему Ответ Часовой пояс GMT +4, время: 12:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
Движение точки. , Модель атома , Элипс
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

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

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


 


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


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