Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   прыгающий мяч (затруднение с использованием while) (http://www.flasher.ru/forum/showthread.php?t=120020)

Ivan Helsin 09.01.2009 19:37

прыгающий мяч (затруднение с использованием while)
 
Доброго времени суток. Только начинаю изучать экшн скрипт и столкнулся с проблемой при использовании цикла 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;
}

Проблема возникает в закоментированой части. Уменьшение и увеличение тени я решил привязать к направлению мяча. Подскажите что именно я написал нитак или как можно сделать иначе, например через for?

UPD: Исходник. сорри продуплил

AlexCooper 09.01.2009 19:45

выложите исходник

DarkLight 09.01.2009 19:45

эээ...ball._y+=2 вернет координату, которая будет всегда преобразвана в true, кроме случая 0 в результате. Таким образом, Вы запускаете бесконечные циклы. "Привязать" означает задать зависимость, причем тут вообще циклы?

AlexCooper 09.01.2009 19:54

Но примерно можно так
Код AS1/AS2:

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);

Добавлено через 8 минут
А точнее будет так
Код AS1/AS2:

shade._width =wMax-(wMax-wMin)/((yMax-yMin)/ball._y);
shade._height=hMax-(hMax-hMin)/((yMax-yMin)/ball._y);

UPD: Извените за повторяющий пост, промазал. Вот так примеру будет всё выглядеть
Код AS1/AS2:

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;
}

только с интервалы настроить и всё.

Ivan Helsin 09.01.2009 20:07

2 AlexCooper

Спасибо, принцип ясен

zurkis 10.01.2009 03:20

а еще советую сюда заглянуть: http://xitri.com, там и про мяч тоже есть, так что проблем быть не должно


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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.