Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.05.2011, 23:57
Gonsalez вне форума Посмотреть профиль Отправить личное сообщение для Gonsalez Найти все сообщения от Gonsalez
  № 1  
Ответить с цитированием
Gonsalez
 
Аватар для Gonsalez

Регистрация: Mar 2011
Адрес: Ibiza
Сообщений: 13
Question перевод AS2 в AS3

нужно сделать прыгающий мячик, как в реальности который прыгает и постепенно останавливается.. нашел в инете то, что нужно, но исходник на as2, а нужен в as3
решил попробовать переделать под as3, переделал, код совсем простой, но есть одна ошибка, дело в том что в as2 все это дело происходит через таймер, но с таймером пока не приходилось сталкиваться и про него совсем ничего не знаю, поэтому из as3 выкинул его совсем.. загвоздка в том, что в as2 когда мячик перестает прыгать он останавливается и стоит на месте, а в as3 он останавливается и начинает смещаться в противоположную сторону.. помогите разобраться, что нужно еще дописать чтобы в as3 было как и в as2?
исходник as2:
Код AS1/AS2:
function ANIM()
{
    Vy = Vy + 0.1;
    ball._y = ball._y + Vy;
    Vx = Vx - 0.01;
    ball._x = ball._x + Vx;
    if (ball._y > 225) 
    {
        Vy = Vy * -0.85;
        Vx = Vx * 0.99;
        if (Vx < 0) 
        {
            clearInterval(timer);
        }
    }
    updateAfterEvent();
}
 
ball._x = 50;
ball._y = 170;
var Vy = 0;
var Vx = 3;
timer = setInterval(ANIM, 1);
исходник as3:
Код AS3:
ball.x = 50;
ball.y = 170;
var Vy = 0;
var Vx = 3;
stage.addEventListener(Event.ENTER_FRAME, moveball);
 
 
function moveball(e:Event):void
{
    Vy = Vy + 0.1;
    ball.y = ball.y + Vy;
    Vx = Vx - 0.01;
    ball.x = ball.x + Vx;
    if (ball.y > 225) 
    {
        Vy = Vy * -0.85;
        Vx = Vx * 0.99;
        if (Vx < 0) 
        {
           Vx *= 0;
        }
    }
 
}
если правильно понимаю, нужно всего лишь правильно составить это условие:
Код AS3:
if (Vx < 0) 
        {
           Vx *= 0;
        }
кому не сложно помогите исправить

Старый 05.05.2011, 00:28
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 2  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Он продолжает ползти влево и вниз, потому что первые четыре строчки функции moveball принуждают его к этому. Можно вместо строчки
Код AS3:
Vx *= 0;
отписаться от прослушки ENTER_FRAME:
Код AS3:
stage.removeEventListener(Event.ENTER_FRAME, moveball);

Старый 05.05.2011, 00:34
Gonsalez вне форума Посмотреть профиль Отправить личное сообщение для Gonsalez Найти все сообщения от Gonsalez
  № 3  
Ответить с цитированием
Gonsalez
 
Аватар для Gonsalez

Регистрация: Mar 2011
Адрес: Ibiza
Сообщений: 13
спасибо за помощь))

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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