Автор: © Eugene D
Как заставить мувиклип изменяться на экране без Tweening? Откроем Flash и
нарисуем шар (в моем примере Properties шара W-20, H-20, X-0, Y-380, при размере
сцены 550х400 пиксель и частоте кадров-12.) Выделим шар и сделаем из него символ
(F8)- MovieClip. Выделим вновь образованный MovieClip, если он не выделен, и
откроем панель Actions. Впишем такой код: onClipEvent (enterFrame) {var
clr _x+=1 _y-=1 _xscale+=1 _yscale+=1 clr=new
Color(this) clr.setRGB(200,200,200) //clr.setRGB(0x335599) или
так. _visible=!_visible }
Жмем Ctrl+Enter, см. Ex1.fla. Шар
увеличивается, изменил цвет, мерцает и движется!
Событие enterFrame
происходит с заданной частотой фильма т.е. в данном примере 12 раз в секунду, а
значит за одну секунду размер мувиклипа увеличится на 12% и по х и по у, а также
смещается и в право, и вверх по 12 пикселей. Если хотите ограничить движение
мувиклипа, то воспользуйтесь конструкцией вроде 'if () {}', так как конструкция
'do {} while ()' выполняет 'do {}' игнорируя 'while ()', при событии enterframe
в onClipEvent.
Это свойство onClipEvent(enterframe) будем использовать
для создания движка на сцене. Представим, что наш шар это ядро выпущенное из
пушки которое должно за 3000 милисекунды (=3 с.) пролететь из одного угла сцены
в другой при этом коснуться самого верха сцены. Наша сцена это, ни что иное,
как координатная плоскость начало координат (0,0) находится в левом верхнем
углу, ось Х направлена в право, а Y в низ, размер сцены 550х400 единиц (pixels),
для данного примера! Начальные координаты шара х0=0, у0=380 и t0=0, это
координаты верхнего левого угла квадратного выделения для шара. Конечные
координаты полета, тогда будут хк=530, ук=380 и tк=3000. В момент наивысшего
подъема шара координаты будут хв=265, ув=0 и tв=1500. Согласно законам движения
материальной точки будем иметь систему уравнений: (хк-х0)/(tк-t0)=vx ;
ук-у0=vуtк+g(tк)2/2 ; ув-у0=vуtв+g(tв)2/2 . Подставив в эти уравнения
известные нам значения, найдем vx=53/300, vy=-38/75 g=38/112500. Зная эти цифры
создадим полет шара. Очистим Actions у шара из первого примера. Зададим
мувиклипу <Instance Name> - ball. Помните, что 'мирское имя' мувиклипа,
которое прописано в библиотеке (Library) и 'партийная (программная)
кличка'(<Instance Name>), не одно и тоже! Теперь на сцене создадим
пустой MovieClip (Ctrl+F8). В не мы и создадим движок для шара-ядра. Можно
поместить этот пустой мувик в х=0 и у=0, чтоб не терялся. Выделим его и откроем
Actions, не долго мудрствуя запишем известные формулы движения тела по параболе
с расчитанными нами параметрами, в код. Выглядит приблизительно,
так: onClipEvent (enterFrame) {var t,vx=53/300,vy=-38/75,g=38/112500 if
(_root.ball._x<530)
{ t=getTimer() _root.ball._x=vx*t _root.ball._y=380+vy*t+(g*t*t/2) } } Жмем
Ctrl+Enter, см. Ex2.fla Ну и что? А то, что формулы различных кривых и как их
строить, мы знаем, кинематика, динамика, дифуры, матанализ и матрицы для нас это
тьфу!, можем творить что угодно в одном кадре!
Литература по FLASH
|