![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2009
Сообщений: 180
|
Появилась задача реализовать подобное программно. Муви клип постоянно движется по определенной элиптической траектории. С помощью рисованной траектории и таймлайновой анимации реализовывать подобное не хочется.
Была попытка сделать это с помощью цикла и четырех движений классом TweenLite. Ничего вразумительного из этого не вышло. Буду очень благодарен, если кто-то поделится своими предложениями и знаниями) Последний раз редактировалось Acrossfy; 12.03.2009 в 23:19. |
|
|||||
|
http://demiart.ru/forum/index.php?showtopic=78132
можно тут глянуть, пример Монстра весьма подробно изложен. |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 180
|
Огромное спасибо, ссылка очень помогла. А то я тут велосипед изобретал)
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 180
|
На основе примера Монстра сделал нужное движение.
var xdist:Number=2; var radStep:Number=Math.PI/360; var ydist:Number=8; var speed:Number=1; var angle:Number=0; mc.onEnterFrame = function(){ angle+=5; var rad=angle*radStep; mc._x=(Math.cos(rad)*xdist)/2; mc._y=(Math.sin(rad)*ydist)/2; }; Решается это вот так: Однако это жутко портит всю малину, ведь с координатами "mc" работают и другие функции перемещающие объект по сцене. И тогда, предварительно передвинув муви клип на точку (60, 60), я решаю проблему так: И вот после этого все работает, как надо, кроме самой функции. Объект в данном случае движется не по элипсу, а по элипсообразной спирали, медленно и плавно уходя за экран. В чем может быть проблема? Как избавиться от этого побочного эффекта? Один из нюансов. Когда вместо численных кординат, прописал "mc._x" и "mc._у", мувиклип крутился как бешенный, пока я не увеличил делитель в самой формуле. С 2 до 60. P.S. Мувик обязательно должен быть на главной сцене. Конечно, если бы его можно было просто вложить в другой мувик, и тот уже двигать куда надо, проблем не было бы. Однако код моей флешки не позволяет делать этот клип вложенным. Последний раз редактировалось Acrossfy; 12.03.2009 в 23:18. Причина: поправил рисунок |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
Вы подумайте, что вы сделали, заменив 60 на переменную, которую в этой-же строке изменяете, и поймёте, что не так.
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 180
|
Ну да.. Глупо было спрашивать почему при этом работает не так, как надо. Но как еще в данном случае заставить клип двигаться вокруг своего положения в сцене, не указывая координат?
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
Эти цифры и есть положение клипа в сцене, т.е. центр эллипса. Вам нужно завести вместо них две новые переменные, и для движения клипа изменять их, а не mc._x,mc._y.
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 180
|
Ну допустим:
//добавляем var a:Number=prod._x; var b:Number=prod._y; //изменяем prod._x=a + (Math.cos(rad)*xdist)/2; prod._y=b + (Math.sin(rad)*ydist)/2; Добавлено через 4 минуты Имеется класс, в котором "mc._x" на "a" поменять никак нельзя. Координаты записываются иным способом. |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
Вам надо всё-таки немного думать, что вы делаете и что в результате этого происходит. Если вы будете постоянно присваивать a и b значения _x и _y, какой тогда смысл в добавлении этих переменных?
Вторую проблему можно решить разными способами. Можно сделать невидимый объект, к которому вы будете применять трансформации, а потом перемещать на новое место видимый; можно сделать новый класс на основе нужного, и т.д. |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 180
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|