Архив рубрики ‘Все остальное’

Динамический цвет без лишних расчетов

10.06.2008, автор: Stormit, рубрики: Flash игры, Все остальное

Не совсем о флэш-играх, но хитрость.

Недавно сделал карту для сайта kartablogov.ru. Она отображает плотность распределения блогов по регионам России. По замыслу автора, регионы на карте должны менять цвет в зависимости от количества блогов. Отлично, цвет в дизайне - сильная штука. Здесь он меняется от зеленого до красного и понять где зарегистрировано больше блогов можно даже без наведения мышки.

Собственно, я столкнулся с проблемой, как расчитать программно промежуточный цвет. То есть, 2 крайних значения у меня есть, а все оттенки между ними должны расчитываться.
Закраска делается функцией Color.setRGB() и ей в качестве параметра нужен цвет в виде 0xFFFFFF. Это хорошо, все привыкли к такому формату, но если записать его в переменную, в таком виде он уже не хранится и при трэйсе выдаст 16777215. Чтобы корректно расчитывать оттенки, цвет нужно разложить на составляющие Red, Green и Blue. И потом по пропорции вычислять для каждой составляющей…

Короче, много работы. Я не спорю, это давно кем-то уже написано и можно найти в сети готовый скрипт. Просто есть еще один интересный способ. Его я и предлагаю:

  1. Создаем символ-контейнер (назовем colorSampler).
  2. В нем создаем клип (назовем s) и анимируем его с эффектом Tint из одного цвета в другой (100 кадров). Фишка в том, что заданный “руками” эффект Tint теперь можно считать программно.
  3. Для этого клипа создается объект Color. И теперь, чтобы получить промежуточный цвет, отправляем символ colorSampler в нужный кадр и считываем его с символа s методом Color.getRGB().

В примере ниже строится произвольный график, где цвет столбиков зависит от их высоты. Символ в нижней части как раз и задает цветовой переход.

Преимущество такого способа перед математическим расчетом в создании цветового перехода любой сложности. Добавлением промежуточных кадров с другими оттенками можно и радугу сделать.

Пока писал пост, подумал что еще проще нарисовать градиент (100 пикселов шириной), сделать из него объект BitmapData и считывать цвет методом getPixel(). Будет наглядней.

13 Хитрых

Картинки обгоняют вектор!

27.05.2008, автор: Stormit, рубрики: Flash игры, Все остальное

Сегодня можно найти большое количество флеш-игр в которых векторная графика по максимуму заменена растровой. Как и зачем это делается рассказывает товарищ Котов:

Привет всем!

Я сейчас попробую рассказать про оптимизацию анимации путем преобразования ее в PNG sequence (набор PNG картинок).

Зачем это надо? Все просто :). Когда много символов с одинаковым содержанием проигрываются одновременно (а в динамичных играх такое часто бывает), мы наблюдаем серьезную загрузку процессора.
На примере данной флэшки на Athlon 1.9 загрузка процессора была 100%, на Intel Core2Duo 3.0 - 24%. После превращения всей повторяющейся анимации в последовательность картинок - 60% и 12% соответственно (24 framerate).

Это все может быть терпимо для некоторых моментов анимации в мультах, но если у нас игра, то тормозами компа можно свести на нет весь геймплэй и физику (кстати, наблюдается пониженная производительность флэшки при запуске ее из браузера).

Вот вам простой и проверенный способ, как быстро сделать из векторной анимации, анимацию из последовательности картинок: Читать полностью »

12 Хитрых

Полезности для флэш-разработчика

17.05.2008, автор: Stormit, рубрики: Все остальное

У каждого флэшера есть свой набор инструментов, которым он пользуется. У всех он разный и зависит от рода деятельности. Хочу поделиться своим набором и рассказать чем пользуюсь я.

На самом деле список совсем маленький, зато емкий. Не могу похвастаться, что всегда находил самые свежие и удобные решения первым - как правило, когда я встречал в сети полезную вещь, оказывалось, что ей как минимум полгода. Эх, знать бы сразу!

Самое полезное в моем арсенале - JSFL сценарии, которые разработал Евгений John Потапенко. Хотя в повседневной работе я пользуюсь всего несколькими функциями, они удовлетворяют почти всем потребностям. Скачать расширения можно с его сайта. Автору огромнейшее спасибо - благодаря тебе сэкономил кучу времени.

Распишу немного, что же это такое. Читать полностью »

8 Хитрых

Пережимаем растр не выходя из флэша

07.04.2008, автор: Stormit, рубрики: Все остальное

Случилось так, что сегодня мне пришлось переделывать презентацию после других людей. И я столкнулся с проблемой излишнего веса в одной из работ - обычная на вид презентация, длительностью 15 секунд, весит целых 6 мегабайт. Оказалось, что ее создатели (совсем американцы зажрались), не мудрствуя лукаво, взяли стоковые фотки и вставили во flash “как есть”, а потом масштабированием уменьшили до нужных размеров.

Пришлось пережимать. И тут флэш меня приятно порадовал - оказывается можно пережать растровую картинку пользуясь только его родными инструментами.

Делаем так: уменьшаем фотографию до нужного размера, копируем в буфер (Ctrl+C), дальше Edit-Paste Special, и в появившемся окне выбираем Device Independent Bitmap. Порадовало, что даже прозрачность сохраняется.

Если нужно получить не все изображение, а только его уменьшенную часть, то перед копированием в буфер, нужно сделать Break Apart и избавиться от ненужных частей.

Думаю впереди еще будет немало задач, в которых этот способ, хоть немного, но оптимизирует рабочий процесс.

3 Хитрых