|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Oct 2013
Сообщений: 126
|
минимальный шаг изменения числа в ENTER_FRAME
Извините, модераторы, если коряво сформулировал тему.
Вопрос у меня такой: в ENTER-FRAME я постепенно увеличиваю прозрачность объекта (т.е. опускаю alpha с 1 до 0 вот так: ). После того, как он становится совсем невидимым, я его уничтожаю. В какой-то момент мне захотелось, чтобы объект "таял" медленней. Я просто добавил нолик, в расчёте на то, что теперь таяние замедлится в 10 раз: . Но не тут-то было! Ничего не поменялось. Проверка alpha в trace показала следующее: Т.е., шаг изменения, грубо говоря, .004 (точнее 0,00390625) вместо указанных мной .0001. Это что же, получается, что это минимальный шаг изменения alpha? Можно ли как-то уменьшить этот шаг, не меняя fps? |
|
|||||
Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
|
Не проще ли в вашем случае использовать твинер?
|
|
|||||
Регистрация: Oct 2013
Сообщений: 126
|
не пробовал, но я так понимаю, для этого надо твинер создавать, потом удалять... А тут, без всякой мороки, вместе с десятками других операций в шаге я одной крохотной строчкой меняю родной параметр спрайта. Другое дело, если твинер - это единственный способ сделать "таяние" медленней... В этом случае буду признателен за общее описание того, как в данном случае это можно реализовать
|
|
|||||
Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
|
Всё наоборот. При использовании твинера можно заанимировать ваше исчезание одной строкой кода.
http://greensock.com/gsap-as |
|
|||||
Регистрация: Oct 2013
Сообщений: 126
|
Но ведь для этого надо использовать целый дополнительный класс. К тому же, то, что по вашей ссылке - это разве бесплатно? Не думаю, что из-за такой мелочи стоит заморачиваться с твинером. Проблему можно оставить нерешённой - фиг с ним, пусть тает быстро, но всё же интересно, что влияет на ограничение минимальной величины изменения alpha в шаге? Это особенность AS3 такая? (Кстати, проверил с разными значениями fps (12,30,60) - разницы никакой: везде при alpha-=.0001 и менее в коде за шаг изменение всё равно 0,0039)
|
|
|||||
Регистрация: Jan 2013
Сообщений: 322
|
a7s1h1, флеш плеер округляет многие значения экранных объектов.
используй дополнительную переменную. var _alpha:Number = alpha; ... _alpha += 0.00001; alpha = _alpha; скорее не округляет а использует float, но я хз не факт Последний раз редактировалось nubideus; 21.01.2015 в 19:39. |
|
|||||
Зря вы так о твинерах. TweenMax имеет бесплатные и платные версии. Но конкурентов у него более чем предостаточно. Я предпочитаю Caurina Tweener. Вы один раз вникните в то, как ими пользоваться и потом сами будете удивляться своей боязни "целого дополнительного класса".
|
|
|||||
Лучше будет, если человек сначала разберётся, почему не получается реализовать без твиннера, и как решить проблему своими силами.
__________________
There is no thing in this world that is not simple. |
|
|||||
Поля DisplayObject-ов(x, y, alpha, rotation, ...) имеют точность точно меньше чем Number - факт
Поэтому да, все промежуточные результаты расчетов надо хранить в дополнительных полях Number |
|
|||||
Альфа хранится в 8-битном канале, и то, что вы указываете, сначала конвертируется в int, а для получения обратно из int во float.
Более подробно вот тут написано http://stackoverflow.com/questions/1...ults-in-the-al Поэтому ни о какой подобной точности можно даже не мечтать в данном случае Цитата:
|
Часовой пояс GMT +4, время: 12:16. |
|
« Предыдущая тема | Следующая тема » |
|
|