IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Flash (https://www.imho.ws/forumdisplay.php?f=53)
-   -   ActionScript по Гурскому (https://www.imho.ws/showthread.php?t=95212)

Sambotey 02.11.2005 22:35

ActionScript по Гурскому
 
Учу ActionScript по Гурскому. Уже в первом же проекте "Прыгающий мяч" неудача - скрипт, прописаный в отдельном слое, но в том же единственном кадре, что и мяч, не работает. А именно, мяч как был на месте, так там и остался. Скрипт:
ball._x = -50;
ball._y = 170;
contour._x = -50;
contour._y = 170;
_root.onEnterFrame = function() {
ball._x += 2;
contour._x += 2;
};
Подскажите, почему...

boor 03.11.2005 01:36

Sambotey
Хм первое ты должен создать новый ролик и назвать его ball во флешке
там нарисовать шар.
Патом этот ролик вставить в основную сцену.
И толька патом создать новый слой и там в кадре прописать этот скрипт.
А так проста флеш не видит объекта для которого этот скрипт.

Sambotey 03.11.2005 09:44

В слое 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 у меня существует?...

woo 21.11.2005 14:23

Вложений: 1
задержал ответ... но я думаю, теперь все будет понятно.
Исходник в приложении.

Для ленивых привожу 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; //увеличиваем время с начала пуска.
}


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

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.