Жизнь/:bpym
August 3, 2008 – 7:55 pmВсе люди разные.
Разные люди пораждают разные желания.
Хепи энд.
Все люди разные.
Разные люди пораждают разные желания.
Хепи энд.
Исходные данные:
Цель: За короткий промежуток времени превратить PSD файл в CSS файл для flex приложения, используя минимум усилий.
Процесс. Замкнутый круг:
Как я решил проблему:
Ни одна(!) из 3х попыток не привела к успеху. Оптимизировать процесс почеловечески не удалось. Поэтому я ручками сохранил и назвал каждый скин, правда делал я это из флеша — экономил на обрезку в фотошопе :). Затем ручками посчитал 9-slice scaling для каждого и вбил его в файл со стилем. Вобщем не самый рациональный способ, но другого я на то момент невидел.
Какие еще есть варианты?
Если не хочется вбивать все ручками можно попробовать истользовать редактор стилей в Flex Builder 3. Но: он не подхватывает заэмбеженые шрифты (говрит немогу и не переключается в визуальный редактор стилей), при выборе файла прописывает полный путь к нему, нельзя задать произвольные 9-slice scaling для разных состояний кнопки, ну иногда попросту задрачивает (попробуйте задать скины для табов у таб навигатора).
Выводы:
В нашем современном мире так и не научились ценить информацию, каждую крупицу информации, не говоря уже об ее больших объемах. Разработчики, вернее проектировщики, гоняться за галочками, но не хотят думать об удобстве обычных смертных. Они заставляют людей делать тупую рутинную работу, которую по определению просто обязан делать компьютер. Но иногда до проектировщиков долетает крик отчаяния людей и тут они пытаюсться сделать что-то полезное:).
Прежде чем браться за скинирование 3 раза подумайте как вы это будете делать. И только потом начинайте процесс генерирования скина. Иначе придеться делать очень много рутинной работы вместо “просто много”. 🙂
У меня такое впечатления что я, что-то упустил в этой жизни. Если это так то поделитесь своими секретами скинования, как оптимизировать процесс так чтобы нужно было совершать минимум телодвижений. Ну или хотя бы управлять процессом силой мысли.
Берем попкорн, ждем Термо…
Ребята из dispatchEvent() (Collective thoughts of the New York Flash community) поняли, что флеш-девелоперы “не въезжают” в принципы работы AS3.0 и AVM2. И эту ситуацию они пытаются исправить двумя доками:
Actionscript 3.0 and Performance Tuning
Первая – это 74 слайда (в pdf, подготовленные Gary Grossman’ом из Adobe) которые будут мегаполезными для понимания таких частей AVM2 как garbage collection, преимущества строгого типизирования, Actionscript byte code (abc) формат, code interpreter и JIT compilation. Для всех кто кодит на AS3 это must-read!
Вторая, значительно более “конденсированная”. В ней 108 страниц которые сухо объясняют всю подноготную работы AVM, показывает как AS3.0 команды “переходят” в процессорные инструкции. Короче – дока для настоящих гиков ::)))
Мой вердикт: первую читать обязательно, вторую – если есть свободное время…
Столько всего интересного происходит, а времени написать нет ::((( Так-что посты коротенькие.
Как Вы думаете можно ли получить прирост с ~20fps на картинке 512×256 до ~38fps на картинке 1024×1024 при полной её “закраске” методом BitmapData.setPixel()?
Mr. doob доказывает, что можно!
Как он говорит: никогда не забывайте BitmapData.lock() и BitmapData.unlock(), они дают прирост с ~7 до ~38 fps.
Пример: http://mrdoob.com/lab/effects/1k/flaxor.swf
Исходник: http://mrdoob.com/lab/effects/1k/flaxor.txt
Пользователям флекс фреймворка советуют использовать SystemManager вместо Stage (ну или я не так это понимаю)
All keyboard and mouse activity that is not expressly trapped is seen by the SystemManager, making it a good place to monitor activity should you need to do so.
Раз советуют, значит так нужно, но не всегда советы работают как нужно!
Неудобства начинаются когда мы хотим что-то потаскать мышкой. Если использовать startDrag() или слушать событие MouseEvent.MOUSE_MOVE/MouseEvent.MOUSE_UP, то при уводе мыши за границы флеш плеера объект просто залипает на последней позиции позиции мыши в окне флеш плеера. Если опустить мышь за окном плеера, то по возвращению в плеер объект будет носиться за мышью до последующего клика. Побороть это можно повесив все события на Stage.
Эти штуки можно посмотреть в примере.
Используйте SystemManager с умом, но не забывайте про Stage.
ps. вордпресс отстой, операция вставки флешки превращается в извращения.
upd: забыл сказать, что в чистом АС3 проекте startDrag() и Stage ведут себя также плохо и хорошо