![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2011
Сообщений: 17
|
Здраствуйте. Уже вторые сутки голову ломаю у меня движется электрон по элипсу таким способом:
Я пытаюсь его размножить 29 раз (медь) А вот дальше встал в ступор. Как мне их наклонять относительно центра (где в свою очередь находится атом) В общем то понимаю как сделать несколько орбит. Но вот как наклонить относительно оси не понимаю. Буду очень благодарен даже вашим соображениям если не коду. |
|
|||||
|
Модрон-ветеринар
|
Нужно использовать класс Matrix.
А точнее, использовать программный эффект skew для копий: import flash.geom.Matrix; var mtrx:Matrix = new Matrix(); //mtrx.b = -0.5; mtrx.c = -0.5; mc.transform.matrix = mtrx; Если его нет, то нужно создать.
__________________
Идите первым! Последний раз редактировалось mooncar; 05.04.2011 в 20:41. |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 17
|
Спасибо за оперативность и интересный метод. Правда пока только электрон нечаянно сделал "элипсовидным" этим способом))) Но думаю разберусь. Заодно сейчас про класс сам почитаю может что уловлю для себя.
Извиняюсь за привычку не дочитывать. Сейчас попробую... Последний раз редактировалось xSx; 05.04.2011 в 20:53. |
|
|||||
|
Модрон-ветеринар
|
Ох уж, не знаю. Я вам дал наводку, думайте
![]() Добавлено через 33 минуты А вообще попробуйте-ка лучше сами орбиты подкорректировать, возможно так лучше будет. Или просто повернуть (_rotation) контейнер с орбитальным движением.
__________________
Идите первым! Последний раз редактировалось mooncar; 05.04.2011 в 21:38. |
|
|||||
|
Модрон-ветеринар
|
Вот тут эллипсы орбит повернуты каждый последовательно на +12 с копейками градусов.
Шаг м/у появлениями на сцене задается в setTimeout. level - чисто для регулировки скорости, берется из стандартного библиотечного регулятора, он не нужен по сути. Да, исходник сохранен для CS4. Код: 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; } } };
__________________
Идите первым! Последний раз редактировалось mooncar; 06.04.2011 в 00:39. |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 17
|
Воот вот это уже для моего разума подходит
Большое спасибо завтра попробую оптимизировать для моей флэшечки и отпишусьДобавлено через 18 часов 5 минут Что то чувствуется ротэйт идёт относительно крайней части элипса, а не центра.. Хотя может я что то криво перенес ой уже кое что придумал. Добавлено через 18 часов 12 минут что то даже правдоподобнее получается! Спасибо большое сейчас понастрою если какие проблемы отпишусь ![]() Добавлено через 18 часов 27 минут Что то по кругу летают Видимо из за того что в 4ый кадр затаскиваю...Добавлено через 18 часов 44 минуты Ох именно 31 фпс надо О_о толком правда не понял почему. Последний раз редактировалось xSx; 06.04.2011 в 19:28. |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:57. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| Движение точки. , Модель атома , Элипс |
|
|