
Flash: плавный медленный битмап
«Плавное медленное» движение битмапа во Флэш
Дано:
медленнодвижущийся объект во flash, представляющий собой (или содержащий) битмап. Если при этом скорость движения объекта мала (приращение позиции за один кадр меньше 1 пиксела), то движение битмапа «рваное» — не происходит сглаживания картинки при движении.
Требуется:
достичь плавного движения битмапа
Решение:
Простое логическое рассуждение: если движение вектора плавное, а битмапа — нет, возможно, превращение битмапа в вектор решит проблему. Как сделать из битовой картинки во flash векторный объект? Просто break его apart! (ctrl+B)! На выходе получаем объект — прямоугольник с битовой заливкой. Далее все операции над ним выполняются, как над векторным объектом, в том числе и анти-алиасинг при не-целых значениях координат пиксела. Замеченные проблемы: при выполнении операции «Break Apart» происходило изменение размеров битмапа (полученный прямоугольник был меньше. Проблема не исчезнет, если его не вернуть к прежним размерам!
Вариант 2: господин Alexey Ivanov предлагает задавать бимапу некоторое искажение (например, _xscale=100.1) и обещает хороший результат. Не исключено, что именно в этом и есть корень решения проблемы (мы ведь тоже изменяли пропорции после Break Apart!)
Вариант 3: Кривоватое, но рабочее решение. По мотивам работ товарища Falkeyn. Поскольку движение рваное, очевидно что оно осуществляется по целым пикселям. А что если использовать два одинаковых битмапа (один над другим), нижний из которых будет двигаться с опозданием, а верхний — с опережением, а для верхнего устанавливать прозрачность в зависимости от его приближения к следующему целому значению координаты?
То есть, если координата не целая, например, _x = 5.2, нижний битмап будет иметь координату _x = 5, а верхний — _x = 6, но при этом будет иметь прозрачность (5.2-5)*100 = 20%. Это будет имитировать анти-алиасинг.
Примеры:
примеры роликовФайлы:
plawny_medl_BMP.zip — zipped .fla (12Кб)
!Облака для примера взяты из работы екатеринбургской студии «Софтмажор» — сайт компании «Европорт».
fla-файл в архиве описывает первый вариант, остальные файлы относятся ко второму варианту. Во втором случае — битмап, подгружаемый извне.
Недостатки:
- Первый вариант работает только с седьмой версией плеера
- Второй вариант потребляет ресурсы из-за покадрового пересчета прозрачности.