![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 27
|
Доброго времени суток. Только начинаю изучать экшн скрипт и столкнулся с проблемой при использовании цикла while.
Нужно сделать пригающий мяч. И всё бы хорошо и всё работает, но есть проблема с тенью, она должна уменьшаться при падении мяча и увеличиваться при его подскакивании. Вот, собсно код: ball._x=-50;
ball._y=170;
contour._x=-50;
contour._y=170;
shade._y=336;
shade._x=-200;
var X2=31;
var X0=50;
var Y0=170;
var t=0;
var a=2;
var Vy=0;
var Vx=6;
var newV=null;
var newY=null;
var newX=null;
var newX2=null;
_root.onEnterFrame = function () {
if (ball._y>350) {
Vy=-newV*0.85;
Vx=0.85*Vx;
X0=newX;
Y0=newY;
X2=newX2;
t=0.6;
}
/* while (ball._y+=2) {
shade._xscale-=2;
}
while (ball._y-=2) {
shade._xscale+=2;
} */
contour._y=Y0+Vy*t+a*t*t/2;
contour._x=X0+Vx*t;
ball._y=Y0+Vy*t+a*t*t/2;
ball._x=X0+Vx*t;
shade._x=X2+Vx*t;
newV=Vy+a*t;
newY=ball._y;
newX=ball._x;
newX2=shade._x;
t+=0.6;
contour._rotation+=8;
}
UPD: Исходник. сорри продуплил Последний раз редактировалось Ivan Helsin; 09.01.2009 в 20:01. |
|
|||||
|
ветеран форума
|
эээ...ball._y+=2 вернет координату, которая будет всегда преобразвана в true, кроме случая 0 в результате. Таким образом, Вы запускаете бесконечные циклы. "Привязать" означает задать зависимость, причем тут вообще циклы?
__________________
4am is time to rock |
|
|||||
|
Но примерно можно так
wMax=10; // Максимальная величина в пикселях по ширине wMin=1; // Минимальная величина в пикселях по ширине hMax=10; // Максимальная величина в пикселях по висоте hMin=1; // Минимальная величина в пикселях по висоте yMax=1000; // Максимальная высота yMin=0; // Минимальная высота shade._width =((yMax-yMin)/ball._y)*(wMax-wMin); shade._height=((yMax-yMin)/ball._y)*(hMax-hMin); А точнее будет так shade._width =wMax-(wMax-wMin)/((yMax-yMin)/ball._y); shade._height=hMax-(hMax-hMin)/((yMax-yMin)/ball._y); ball._x=-50; ball._y=170; contour._x=-50; contour._y=170; shade._y=336; shade._x=-200; var X2=31; var X0=50; var Y0=170; var t=0; var a=2; var Vy=0; var Vx=6; var newV=null; var newY=null; var newX=null; var newX2=null; wMax=100; // Максимальная величина в пикселях по ширине wMin=1; // Минимальная величина в пикселях по ширине hMax=100; // Максимальная величина в пикселях по висоте hMin=1; // Минимальная величина в пикселях по висоте yMax=500; // Максимальная высота yMin=0; // Минимальная высота _root.onEnterFrame = function () { if (ball._y>350) { Vy=-newV*0.85; Vx=0.85*Vx; X0=newX; Y0=newY; X2=newX2; t=0.6; } shade._width =wMax-(wMax-wMin)/((yMax-yMin)/ball._y); shade._height=hMax-(hMax-hMin)/((yMax-yMin)/ball._y); contour._y=Y0+Vy*t+a*t*t/2; contour._x=X0+Vx*t; ball._y=Y0+Vy*t+a*t*t/2; ball._x=X0+Vx*t; shade._x=X2+Vx*t; newV=Vy+a*t; newY=ball._y; newX=ball._x; newX2=shade._x; t+=0.6; contour._rotation+=8; }
__________________
return this... Последний раз редактировалось AlexCooper; 09.01.2009 в 20:07. |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 27
|
2 AlexCooper
Спасибо, принцип ясен |
|
|||||
|
Регистрация: Nov 2008
Адрес: Атланта
Сообщений: 1,271
|
а еще советую сюда заглянуть: http://xitri.com, там и про мяч тоже есть, так что проблем быть не должно
__________________
Пока я жив, Вы горем обеспечены |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|