| imho.ws |
![]() |
|
|
|
# 1 |
|
Junior Member
Регистрация: 18.02.2004
Адрес: Краснодар
Сообщения: 94
![]() ![]() |
ActionScript по Гурскому
Учу ActionScript по Гурскому. Уже в первом же проекте "Прыгающий мяч" неудача - скрипт, прописаный в отдельном слое, но в том же единственном кадре, что и мяч, не работает. А именно, мяч как был на месте, так там и остался. Скрипт:
ball._x = -50; ball._y = 170; contour._x = -50; contour._y = 170; _root.onEnterFrame = function() { ball._x += 2; contour._x += 2; }; Подскажите, почему... |
|
|
|
|
# 2 |
|
::VIP::
Хрюндель Регистрация: 27.10.2002
Адрес: Столица блин
Сообщения: 650
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Sambotey
Хм первое ты должен создать новый ролик и назвать его ball во флешке там нарисовать шар. Патом этот ролик вставить в основную сцену. И толька патом создать новый слой и там в кадре прописать этот скрипт. А так проста флеш не видит объекта для которого этот скрипт.
__________________
Если Вас выписали из сумасшедшего дома, это не значит, что Вас вылечили. Просто Вы стали как все. |
|
|
|
|
# 3 |
|
Junior Member
Регистрация: 18.02.2004
Адрес: Краснодар
Сообщения: 94
![]() ![]() |
В слое Layer1 я нарисовал шарик, сделал его Movie Clip. Затем создал новый слой ( на панели Timpline он располагается выше первого), назвал его «Action* и там прописал весь вышеизложенный скрипт (этот скрипт я пробовал прописывать и в том же слое Layer1, но эффект тот же).
Кстати, по Гурскому, я увеличил скрипт: ball._x = -50; ball._y = 170; contour._x = -50; contour._y = 170; var X0 = 50;//координата начальной точки по Х var Y0 = 170;//координата начальной точки по Y var t = 0;//время движения var a = 2;//ускорение var Vy = 0;//начальное значение вертикальной состовляющей скорости var Vx = 6;//начальное значение горизонтальной состовляющей скорости var newV = null; var newX = null; var newY = null; trace(ball._x); _root.onEnterFrame = function() { if (ball._y>350) { Vy = -newV*0.85; Vx = Vx*0.85; t = 0.6; X0 = newX; Y0 = newY; } ball._x = X0+Vx*t; ball._y = Y0+Vy*t+a*t*t/2; newV = Vy+a*t; newY = ball._y; newX = ball._x; t += 0.6; trace(t); }; Т.е. шарик должен прыгать. А у меня он все время на месте... Так вот. Последняя строка функции - trace(t) - в окне Output выводит постоянные изменения переменной t, т.е. скрипт работает. Но, что самое интересное, при выводе с помощью trace(ball._x) (это еще до вызова функции), в Output я с удивлением читаю "indefined"!... Вот уж никак не ожидал. Что бы это могло значить, ведь Movie Clip с именем ball у меня существует?... |
|
|
|
|
# 4 |
|
Flasher
Регистрация: 04.11.2003
Адрес: Питер
Сообщения: 76
![]() |
задержал ответ... но я думаю, теперь все будет понятно.
Исходник в приложении. Для ленивых привожу actionscript который управляет движением мяча: onClipEvent (load) { //задаем начальные значения параметров (между прочим именно в этом была ошибка Sambotey) _x = 0; _y = 0; var X0 = 140;//координата начальной точки по Х var Y0 = 30; //координата начальной точки по Y var t = 0; //время движения var a = 10; //ускорение var Vy = 12; //начальное значение вертикальной состовляющей скорости var Vx = 6; //начальное значение горизонтальной состовляющей скорости } onClipEvent (enterFrame) { if(_y>250) { //если достигли земли то, меняем направление скорости. Vy=-newV*0.85; //поскольку удар о землю, то часть скорости гасится. Vx=Vx*0.97; t=0.9; X0=newX; Y0=newY; //trace("shpok"); _rotation += Vx; //мяч от удара о землю вращается на некоторый угол. } _y=Y0+Vy*t+a*t*t/2; //вычисляем тукущее положение по Y _x=X0+Vx*t; //вычисляем тукущее положение по X newV=Vy+a*t; //вычисляем значение Скорости по Y newY=_y; //переопределяем значение Y0 newX=_x; //переопределяем значение X0 на случай, если следующим шагом будет "земля" и придется менять направление движения. t+=0.7; //увеличиваем время с начала пуска. } |
|
|