понедельник, октября 05, 2009

Копипаст фильтров из CS во Flex

Хорошая это штука - "Copy Motion to ActionScript 3" - в IDE CS3 (речь идет именно об этой версии). Наверняка, все уже давно смекнули, какие выгоды она несет для Flex. Главная выгода - сокращается объем ручной работы и отладки.
В частности, я успешно копирую настройки фильтров для компонентов. И делаю это следующим образом:
  1. В тестовом файле создаем клип образца, визуально похожего на то что у нас должно быть во flex - например, текстовое поле или кнопку. Навешиваем на нее кучу фильтров, до получения нужной нам картинки.
  2. На слое с клипом кликаем правой кнопкой и выбираем "Copy Motion to ActionScript 3".
  3. Вставляем куда-нибудь то, что скопировалось в буфер - например, тут же в редактор Actions.
  4. Находим там блок <filters>...</filters>
  5. Копипастим его себе во Flex-код, в контейнер тега нужного нам визуального компонента.
  6. Заменяем filters на mx:filters и filters:BevelFilter на mx:BevelFilter.mx:filters может быть другой префикс - зависит от компонента)
  7. Компилируем и получаем картину, аналогичную CS. Дотюниваем, если необходимо, параметры.

12 комментариев:

mio комментирует...

нубский вопрос =)
в чем преимущество флекса над флешом если вкратце?

Racer комментирует...

В кратце? Flex дает системный подход к решению сложной Flash-задачи.

foreground комментирует...

я поглядел на него и решил забить. Столкнулся с такой штукой. Надо было делать отрисовку в нескольких UIComponent синхронно. Получалось так что был видимый сдвиг при ресайзе всей компоненты. Пока я не засунал с1.updateDisplayList(); с2.updateDisplayList() в onUpdateComplete c1-ого. Т.е. получился цикл. Другого решения я не нашел на тот момент и успокоился, потому что на эту разработку слава богу забили. А вобще сколько компонент не глядел (с ресайзом) тормоза получались везде не слабые. Теперь разрабатываю свои компоненты.

Racer комментирует...

2 foreground: сорри, не допонял, ты о флекс или о копипасте? :) В смысле забить?

foreground комментирует...

2Racer: извини, я о флексе, а не о том, о чём ты писал :).
После того как поглядел на внутренний код флексовых компонент мне расхотелось с ним работать.

Racer комментирует...

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

foreground комментирует...

Ну вот примеры профессионально сделанных компонент http://www.axiis.org/examples.html

У меня тормозит нехило. Можешь объяснить, как можно решить проблему синхронной отрисовки, о которой я написал? Может я еще успею полюбить этот продукт.

Racer комментирует...

А что тормозит? Тут же всё статика.

Функция updateDisplayList выполняется на следующий фрейм после вызова invalidateDisplayList - это принцип отложенного вызова - для того, чтобы перерисовывать компонент не каждый раз при изменении каких-либо данных, а только один раз.
Рассогласование происходит видимо изза того, что они по какой-то причине перерисовываются в разные фреймы.

foreground комментирует...

Ну было дело открывал в баузере кольцевую диаграмму и получал супер тормоз. Чуть браузер не вылетел. При ресайзе некорректно изменяются размеры. Скрол вертикальный и горизонтальный неправильно работают. . да много еще всякого. Взять датагрид, у него заявлена возможность делать любые ItemRenderer-ы. Хрена лысого их сделать при различной высоте.

Racer комментирует...

Косяков хватает, спору нет, но это еще не повод писать свой флекс.
Просто ищется обходное решение. Всегда можно найти альтернативу, даже если придется написать свой компонент :)

foreground комментирует...

А ты видел хоть один нормальный пусть даже коммерческий AS3 фрэймворк? Вот и ездим на велосипедиках.

Racer комментирует...

Конечно, ты никогда не найдешь фреймворк, который удовлетворит все твои задачи. Но это еще не значит, что надо затвориться от мира и писать всё самому.
Надо затачивать под свои задачи то что есть.
Но и никто не запрещает писать свои фреймворки, которые возможно могут оказаться гораздо круче и удобнее других. Я до сих пор пользую один свой фреймворк, который сформировался у меня еще в начале AS3, хотя понимаю, что его надо рефакторить от корки до корки. Просто мне удобно, когда надо сделать быстро.

Но все-таки популярность фреймворка - это знак того, что он надежен и востребован.