Comments 12
Подход с хранимым значением currentValue — костыль. При достаточно большом количестве промежуточных кадров и при каждом инкременте будет накапливаться ошибка. Поэтому твинер должен рассчитывать значение параметра каждый раз через интерполятор как функцию от процента завершенности анимации. Это сразу решает все проблемы и убирает подобные костыли.
+8
Согласен, что у автора в данном случае получился костыль, т.к. мы знаем конец и начало.
Но мне интересно, а как быть без этого костыля (без отдельного хранения координаты), когда мы не знаем конца анимации? Например движение шарика, которым управляет игрок.
Но мне интересно, а как быть без этого костыля (без отдельного хранения координаты), когда мы не знаем конца анимации? Например движение шарика, которым управляет игрок.
0
Есть такая парадигма, что данные от представления хранятся отдельно. То есть координаты объекта храниться будут не в Sprite а в отдельной переменной. И все расчеты будут вестись с этой переменной, а при обновлении кадра Sprite просто будет брать значение из переменной.
0
>> Любой DisplayObject, даже не добавленный в DisplayList исправно получает событие входа на кадр.
Разумется получает! Что значит «недокументированная особенность»? Нигде и не было сказано, что это событие не получают не добавленные в дисплейлист объекты. Я, честно говоря, удивляюсь, как можно было писать что-то на as3 и не знать этой «особенности».
Вот цитата из документации:
«Dispatched when the playhead is entering a new frame. If the playhead is not moving, or if there is only one frame, this event is dispatched continuously in conjunction with the frame rate. This event is a broadcast event, which means that it is dispatched by all display objects with a listener registered for this event.»
Разумется получает! Что значит «недокументированная особенность»? Нигде и не было сказано, что это событие не получают не добавленные в дисплейлист объекты. Я, честно говоря, удивляюсь, как можно было писать что-то на as3 и не знать этой «особенности».
Вот цитата из документации:
«Dispatched when the playhead is entering a new frame. If the playhead is not moving, or if there is only one frame, this event is dispatched continuously in conjunction with the frame rate. This event is a broadcast event, which means that it is dispatched by all display objects with a listener registered for this event.»
0
Да уж, что возьмешь с флеш-программистов :) очевидно, что параметры объекта надо не инкрементить, а вычислять по формуле value = initial_value + change_speed * (time — start_time). Я не знаю, насколько во флеше гарантируется стабильность частоты вызова ENTER_FRAME, возможно, надо брать время, возможно, достаточно брать номер текущего кадра.
Но, конечно, сокруглением до 0.05, флеш выкидывает интересные коленца.
Но, конечно, сокруглением до 0.05, флеш выкидывает интересные коленца.
-2
UFO just landed and posted this here
-Доктор когда я делаю ТАК, у меня там что-то щелкает.
-А вы не делайте ТАК.
-Как же не делать? Оно же щелкает!
-А вы не делайте ТАК.
-Как же не делать? Оно же щелкает!
0
Флеш не гарантирует 100% точность частоты вызовов ENTER_FRAME, метод изначально не правильный.
+1
Сократил статью.
+1
Sign up to leave a comment.
Математика флешевого Number при твининге DisplayObject