![]() |
глючит карусель в баннере
Вложений: 1
Ребят, всем привет, очень задолбался поэтому прошу помощи, я в AS3 новичок. Короче пытаюсь сделать я карусель.
Объекты двигаются по эллипсу, меняется угол, от pi/2 до pi (ну примерно до pi - в коде видно). Когда угол предыдущего объекта становится равным pi - текущий объект перемещается в начало карусели т.е. угол равняется pi/2. В общем, странное как - то ведет себя каруселька, при больших приращениях угла через пару оборотов расстояние между объектами становится разным, да и иногда объекты не хотят перемещаться в начало карусели. Не могу понять в чем дело. Баннер вложил в архив. Полный исходник класса: Код AS3:
|
Я не знаю, у кого как, но у меня нет никакого желания вникать в такой код.
Что это за e.target.ugol = Math.PI/2? Приведите e.target к чему то нормальному. Зачем в коде столько чисел? Вынесите их в константы или используйте динамические, расчетные величины например, tempItem.scaleX = 1 - (7-i)*0.125; Что за 7, откуда оно? А 0.125? Извините, если резковато, но все же, если упорядочить код, то и искать проблемы станет проще! |
Ок, поправил код, удалил всё лишнее и прокомментировал всё, кажется теперь должно быть понятнее
"Что это за e.target.ugol = Math.PI/2? Приведите e.target к чему то нормальному." что значит к нормальному, чем это не нормально? Что значит написал в комментариях к коду. Те же глюки что и были. Код AS3:
|
выложите исходники если хотите чтобы вам помогли, я за вас это - new AmorSym(),new Vinograd(),new ChocolateSym(),new CoffeSym(),new Vishnya(),new Hugo(),new GreypFR(),new SunDance() рисовать не буду. А на пустышке я глюков не увидел.
Цитата:
|
Вот исходник http://www.onlinedisk.ru/file/823733/
Класс в файле, я имел ввиду реализацию его методов. Допустим в одном файле класс и прототипы методов, В другом - реализация, можно ли так? |
Лучше перепишите код так, чтобы у вас один слушатель ENTER_FRAME двигал все объекты. Сейчас каждый двигает сам себя, поглядывая на соседей, и тут черт ногу сломит, что происходит.
Расхождение по углу скорее всего возникает, когда объекты перепрыгивают angleEtalon и ставятся на начальный угол. Когда скорость большая, на момент проверки угол будет не angleEtalon, а скажем angleEtalon + 0.1. И после этого он ставится на Math.PI / 2, хотя должен быть на Math.PI / 2 + 0.1. |
Код AS3:
Глючит по прежнему, возможно из-за второго глюка - объекты иногда не перемещаются в начало. Спасибо, перепишу на один слушатель, мож тогда все прояснится. Есть еще идеи? |
Есть.
Вместо того, чтобы двигать каждый объект отдельно, привязать всю пачку к одному углу, и менять только этот угол. Проще объяснить на примере. Заводим некий baseAngle, относительно которого будут позиционироваться объекты, и в слушателе ENTER_FRAME делаем следующее: 1. Изменяем скорость (как сейчас) 2. Передвигаем baseAngle (как сейчас передвигаются объекты) 3. Вычисляем угол каждого объекта относительно baseAngle (например, item.ugol = baseAngle + i * 0.1) 4. Вычисляем координаты объектов, скейлим, сортируем При таком подходе все объекты будут всегда жестко зафиксированы на угловом расстоянии 0.1 радиана друг от друга. |
Вложений: 1
Вообщем ребят вот что получилось, вроде глюков не видно, сделал по простому.
Хотел чтобы объект двигался в сторону, пока предыдущий объект не достиг ПИ, а потом перемещался в конец очереди, и при обратном вращении чтоб такая же обратная анимация была. Но что-то не могу понять как это сделать, точнее я че то сделал, но глючит ужасно. |
Вложений: 1
Если кому интересно сделал второй вариант, спасибо всем за помощь...
|
| Часовой пояс GMT +4, время: 11:13. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.