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

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

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

Регистрация: Oct 2013
Сообщений: 126
По умолчанию минимальный шаг изменения числа в ENTER_FRAME

Извините, модераторы, если коряво сформулировал тему.
Вопрос у меня такой: в ENTER-FRAME я постепенно увеличиваю прозрачность объекта (т.е. опускаю alpha с 1 до 0 вот так:
Код AS3:
alpha -= .0001
). После того, как он становится совсем невидимым, я его уничтожаю.
В какой-то момент мне захотелось, чтобы объект "таял" медленней. Я просто добавил нолик, в расчёте на то, что теперь таяние замедлится в 10 раз:
Код AS3:
alpha -= .00001
. Но не тут-то было! Ничего не поменялось. Проверка alpha в trace показала следующее:
Код AS3:
0.99609375
0.9921875
0.98828125
0.984375
Т.е., шаг изменения, грубо говоря, .004 (точнее 0,00390625) вместо указанных мной .0001. Это что же, получается, что это минимальный шаг изменения alpha? Можно ли как-то уменьшить этот шаг, не меняя fps?

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Не проще ли в вашем случае использовать твинер?

Старый 21.01.2015, 18:13
a7s1h1 вне форума Посмотреть профиль Отправить личное сообщение для a7s1h1 Найти все сообщения от a7s1h1
  № 3  
Ответить с цитированием
a7s1h1

Регистрация: Oct 2013
Сообщений: 126
Цитата:
Сообщение от illuzor Посмотреть сообщение
Не проще ли в вашем случае использовать твинер?
не пробовал, но я так понимаю, для этого надо твинер создавать, потом удалять... А тут, без всякой мороки, вместе с десятками других операций в шаге я одной крохотной строчкой меняю родной параметр спрайта. Другое дело, если твинер - это единственный способ сделать "таяние" медленней... В этом случае буду признателен за общее описание того, как в данном случае это можно реализовать

Старый 21.01.2015, 18:19
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 4  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Всё наоборот. При использовании твинера можно заанимировать ваше исчезание одной строкой кода.
http://greensock.com/gsap-as

Старый 21.01.2015, 18:42
a7s1h1 вне форума Посмотреть профиль Отправить личное сообщение для a7s1h1 Найти все сообщения от a7s1h1
  № 5  
Ответить с цитированием
a7s1h1

Регистрация: Oct 2013
Сообщений: 126
Но ведь для этого надо использовать целый дополнительный класс. К тому же, то, что по вашей ссылке - это разве бесплатно? Не думаю, что из-за такой мелочи стоит заморачиваться с твинером. Проблему можно оставить нерешённой - фиг с ним, пусть тает быстро, но всё же интересно, что влияет на ограничение минимальной величины изменения alpha в шаге? Это особенность AS3 такая? (Кстати, проверил с разными значениями fps (12,30,60) - разницы никакой: везде при alpha-=.0001 и менее в коде за шаг изменение всё равно 0,0039)

Старый 21.01.2015, 19:22
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 6  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
a7s1h1, флеш плеер округляет многие значения экранных объектов.

используй дополнительную переменную.
var _alpha:Number = alpha;
...
_alpha += 0.00001;
alpha = _alpha;

скорее не округляет а использует float, но я хз не факт


Последний раз редактировалось nubideus; 21.01.2015 в 19:39.
Старый 21.01.2015, 20:03
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 7  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
Зря вы так о твинерах. TweenMax имеет бесплатные и платные версии. Но конкурентов у него более чем предостаточно. Я предпочитаю Caurina Tweener. Вы один раз вникните в то, как ими пользоваться и потом сами будете удивляться своей боязни "целого дополнительного класса".
__________________
сайт, vk

Старый 21.01.2015, 20:07
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 8  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
Сообщение от olexandr Посмотреть сообщение
Зря вы так о твинерах. TweenMax имеет бесплатные и платные версии. Но конкурентов у него более чем предостаточно. Я предпочитаю Caurina Tweener. Вы один раз вникните в то, как ими пользоваться и потом сами будете удивляться своей боязни "целого дополнительного класса".
Лучше будет, если человек сначала разберётся, почему не получается реализовать без твиннера, и как решить проблему своими силами.
__________________
There is no thing in this world that is not simple.

Старый 21.01.2015, 21:17
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 9  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Код AS3:
скорее не округляет а использует float, но я хз не факт
Поля DisplayObject-ов(x, y, alpha, rotation, ...) имеют точность точно меньше чем Number - факт
Поэтому да, все промежуточные результаты расчетов надо хранить в дополнительных полях Number

Старый 22.01.2015, 09:19
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 10  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Альфа хранится в 8-битном канале, и то, что вы указываете, сначала конвертируется в int, а для получения обратно из int во float.
Более подробно вот тут написано http://stackoverflow.com/questions/1...ults-in-the-al
Поэтому ни о какой подобной точности можно даже не мечтать в данном случае
Цитата:
Поэтому да, все промежуточные результаты расчетов надо хранить в дополнительных полях Number
Что-то мне подсказывает, что это здесь не поможет. Числа то храниться будут, но на альфу это скорее всего не подействует

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

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

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


 


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


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