Comments 49
Тоже некоторое время назад учил Flex, потом понял, что Flex сильно ограниченный фреймворк, и многие вещи через него просто невозможно сделать…
-7
Можно поподробнее?
+1
например приложения легче 300Кб :)
+7
Я пробовал создать RSS Reader на флеше…
В итоге оказалось, что он поддерживает буквально несколько HTML тегов, поэтому возник нереальный геморой например с тем, чтобы парсить код вставки ютуб ролика или например, чтобы отобразить анимированную GIF картинку.
Вообще отсутствие поддержки HTML не дает комфортно создавать флеш приложения с текстом.
Например, хочу сделать флешку, в которой 10 пунктов меню, кликаешь по пунку и подгружается текст этого пункта из БД.
Но как этот текст форматировать? Если, даже, стандартно тег table не поддерживает, а только после написания нескольких костылей.
ИМХО, я считаю, что форматирование текста очень важный момент, и он должен был быть реализован в фреймворке…
Там еще какие-то проблемы были, сейчас уже не припомню, помню что на форуме флешер.ру разводили руками и говорили что flex неповоротлив и что проще сразу было делать на чистом флеше + AS
В итоге оказалось, что он поддерживает буквально несколько HTML тегов, поэтому возник нереальный геморой например с тем, чтобы парсить код вставки ютуб ролика или например, чтобы отобразить анимированную GIF картинку.
Вообще отсутствие поддержки HTML не дает комфортно создавать флеш приложения с текстом.
Например, хочу сделать флешку, в которой 10 пунктов меню, кликаешь по пунку и подгружается текст этого пункта из БД.
Но как этот текст форматировать? Если, даже, стандартно тег table не поддерживает, а только после написания нескольких костылей.
ИМХО, я считаю, что форматирование текста очень важный момент, и он должен был быть реализован в фреймворке…
Там еще какие-то проблемы были, сейчас уже не припомню, помню что на форуме флешер.ру разводили руками и говорили что flex неповоротлив и что проще сразу было делать на чистом флеше + AS
0
Флеш (вернее базовый класс TextField, унаследованный от DisplayObject, а только он работает с текстом) не поддерживает html. То, что там есть свойство htmlText говорит лишь о том, что они сделали небольшое удобство людям, которые хотят в тексте видеть, например, функционал , и при этом не реализовывать его ручками. Это НЕ html, это реализация поддержки тега.
Я считаю, что поддержка html ни в коей мере не должна находится в ядре флеша (globalplayer.swc), если надо — делаем google:(parser+html+as3) и используем уже написанные библиотеки.
Далее, для особо продвинутого форматирования текста был создан фреймворк TextLayout (написан на чистом as3, как и флекс). Это для тех случаев, когда стандартный flash.text.* недостаточен. Однако TextLayout весит 300КБ, соотвественно ваш проект увеличится примерно на столько же в релизе, однако этот фреймворк позволяет делать с текстом такое, что html+css+js даже и не снилось.
Посути флеш — это SWF-Tags + Actionscript (abc-код в fp9 и выше). Часть из swftags можно реализовать на as(3), например тег DefineShape (в fp10 это получится DefineShape4):
var s:Shape = new Shape();
s.graphics = ....;
addChild(s);
Flex и TextLayout это лишь фреймворки, использующие as3, посему и ограничены лишь ядром флеша. Т.е если FP9 не поддерживает RTMFP, в отличие от FP10; то и flex не сможет добавить этой функциональности. А вот разметку в процентах флекс дает. Но это и не минус флеша, ибо с поддержкой процентов, как писал ниже, «Hello, word!» будет весить не 576 bytes, а раза в 4 больше, и рост будет увеличиваться пропорционально используемым DisplayObjects в коде, что не приемлемо, ИМХО.
Так что вы привели пример незнания технологий, основанных на флеше, уж извините, и клянете в этом флекс, а он тут, мягко говоря, совершенно не причем. Парсеры html на as3 есть (не говоря уже о том, что xml поддерживаетя в ядре — flash.xml.*), базовое форматирование тоже (flash.text.*), остальное дописывается ручками.
Я считаю, что поддержка html ни в коей мере не должна находится в ядре флеша (globalplayer.swc), если надо — делаем google:(parser+html+as3) и используем уже написанные библиотеки.
Далее, для особо продвинутого форматирования текста был создан фреймворк TextLayout (написан на чистом as3, как и флекс). Это для тех случаев, когда стандартный flash.text.* недостаточен. Однако TextLayout весит 300КБ, соотвественно ваш проект увеличится примерно на столько же в релизе, однако этот фреймворк позволяет делать с текстом такое, что html+css+js даже и не снилось.
Посути флеш — это SWF-Tags + Actionscript (abc-код в fp9 и выше). Часть из swftags можно реализовать на as(3), например тег DefineShape (в fp10 это получится DefineShape4):
var s:Shape = new Shape();
s.graphics = ....;
addChild(s);
Flex и TextLayout это лишь фреймворки, использующие as3, посему и ограничены лишь ядром флеша. Т.е если FP9 не поддерживает RTMFP, в отличие от FP10; то и flex не сможет добавить этой функциональности. А вот разметку в процентах флекс дает. Но это и не минус флеша, ибо с поддержкой процентов, как писал ниже, «Hello, word!» будет весить не 576 bytes, а раза в 4 больше, и рост будет увеличиваться пропорционально используемым DisplayObjects в коде, что не приемлемо, ИМХО.
Так что вы привели пример незнания технологий, основанных на флеше, уж извините, и клянете в этом флекс, а он тут, мягко говоря, совершенно не причем. Парсеры html на as3 есть (не говоря уже о том, что xml поддерживаетя в ядре — flash.xml.*), базовое форматирование тоже (flash.text.*), остальное дописывается ручками.
+8
>html+css+js даже и не снилось
например?
например?
0
спасибо, возможно я плохо изучил вопрос.
0
Да не за что. Кстати, первый найденный из запроса в гуглю as3htmlparser (demo), поддерживает довольно много.
А флеш — это очень мощная штука, но полная картина всплывает лишь только после изучения спецификаций swf9 и выше.
А флеш — это очень мощная штука, но полная картина всплывает лишь только после изучения спецификаций swf9 и выше.
0
И в чем же он ограничен, простите?
+1
Присоединяюсь к вопросу
-1
ТУпо первый пришедший в голову пример: чтобы сделать компонент tabbar у которого вкладки располагаются не в одну строчку, а в две, нужно сверх круто знать флекс. Это Оооооочень не тривиальная задача, которая под силу далеко не каждому.
0
Вы знаете, чтобы написать что-то серьезное, надо вообще быть специалистом в области. Для написания собственного компонента НЕОБХОДИМО знать жизненный цикл, аспекты, логику фреймворка и пр. Без этого какой смысл что-то писать? ПолуНедоСпециалисты в этой жизни слабо котируются.
Если я верно понял что вы придумали, то эта задача на экран кода (при этом используя уже готовый TabBar из flex3 (а не TabNavigator)). Тут как раз даже не вижу сложности.
Если я верно понял что вы придумали, то эта задача на экран кода (при этом используя уже готовый TabBar из flex3 (а не TabNavigator)). Тут как раз даже не вижу сложности.
+1
UFO just landed and posted this here
Вопервых, c чего вы решили, что я буду писать этот компонент? У меня своей работы достаточно и мое время стоит определенных денег. Вовторых на ты тут общаться не приянто незнакомым людям, ну да ладно. А в третьих, сформулируйте полное поведение вашего компонента (порядок заполнения табов (т.е как заполняются — сначала до упора первый или попеременно), кол-во элементов в табе (?) и/или пр.) и если у меня будет свободное время, я его вам отпишу.
0
блин… складывается такое чувство, что подавляющее большинство хабралюдей владеют только php… причем некоторые из них враждебно относятся к другим языкам и технологиям… это наверно потому, что для того чтобы начать программировать на php особо много скиллов не надо… там даже ООП появилось только в 5 версии… так что начать быть программистом php может любой школьник 8 класса…
а утверждать чего нельзя сделать на Flex, не умея делать хотя бы что-нибудь на Flex, я бы ни стал…
а утверждать чего нельзя сделать на Flex, не умея делать хотя бы что-нибудь на Flex, я бы ни стал…
0
Флекс он, конечно же, сильный, мощный фремворк, но с одним существенным недостатком — слишком много весят конечные приложения (от 1МБ флекс3, от 1.7МБ флекс4). Для интрАнета — в самый раз, для интернета — тяжеловато еще, ИМХО, даже с использованием rsl.
Для такой задачи я бы выбрал чистый флеш и уложился бы на стандартных компонентах (fl.*) в 50-100 КБ.
Для такой задачи я бы выбрал чистый флеш и уложился бы на стандартных компонентах (fl.*) в 50-100 КБ.
+2
ну не знаю у меня «Hello, word!» 279 KB.
О какой задаче вы говорите? Flex — это RIA. Flash — это графика…
О какой задаче вы говорите? Flex — это RIA. Flash — это графика…
-5
о задаче, которую реализовал ТС.
«Hello, word!» — это не приложение :) Однако на флеше, только что проверил, «Hello, word!» заняло 576 bytes в релиз-версии. Разница, на сой взгляд, очевидна.
«Hello, word!» — это не приложение :) Однако на флеше, только что проверил, «Hello, word!» заняло 576 bytes в релиз-версии. Разница, на сой взгляд, очевидна.
+4
я писал такой загрузчик полгода назад без использования флекс.
это был мой первый проект на ас3. итоговый размер свф — 281 кб.
и это с подключенной библиотекой алчеми для сжатия изображений.
это был мой первый проект на ас3. итоговый размер свф — 281 кб.
и это с подключенной библиотекой алчеми для сжатия изображений.
0
Ответил чуть выше. SDK отвязывается через RSL. Пишу статью дабы развеять заблуждения
0
Да знаю я, даже уточнил. Однако всем интересен первый клиент на приложении (у которого, скорее всего, библиотеки еще не шарены), а он не собирается ждать загрузки 10 секунд и более, он быстрее уйдет с ресурса.
Гугля проводила исследования на эту тему — как только скорость отображения их главной страницы увеличилась на что-то типа 0.7 секунды (из за каких-то js-компоненттов), они потеряли 13% трафа. Не нахожу никак пруф-линк, но рассказывала это женщина какой-то главный аналитик Гугла. С красивыми графиками и пр. И я склонен ей доверять, в моей практике такое тоже случалось, лишь из-за банального увеличения веса страницы траф падал.
Гугля проводила исследования на эту тему — как только скорость отображения их главной страницы увеличилась на что-то типа 0.7 секунды (из за каких-то js-компоненттов), они потеряли 13% трафа. Не нахожу никак пруф-линк, но рассказывала это женщина какой-то главный аналитик Гугла. С красивыми графиками и пр. И я склонен ей доверять, в моей практике такое тоже случалось, лишь из-за банального увеличения веса страницы траф падал.
0
Всё хорошо, но только Ваш загрузчик не уменьшает фотографии перед отправкой. В той статье ссылку на которую вы дали уменьшение идет для помещения картинки в контейнер с заданными размерами. Реальное уменьшение делается библиотеками которые перекодируют байтовый массив изображения. Есть несколько библиотек на AS3 в том числе от adobe, но у них один минус — они тормозные. Проблема тормозов решается использование adobe alchemy которая позволяет использовать компилированый код написанный на С++ и благодаря этому повысить производительность. Насколько я знаю вконтакте как раз использует alchemy.
Я делал подобный загрузчик как раз с использованием alchemy для уменьшения картинок. Посмореть можно как работает «уменьшалка» тут
Если интересно могу написать как создавать подобное. Так же могу написать о том как делать скинабельные компоненты на флэше.
Я делал подобный загрузчик как раз с использованием alchemy для уменьшения картинок. Посмореть можно как работает «уменьшалка» тут
Если интересно могу написать как создавать подобное. Так же могу написать о том как делать скинабельные компоненты на флэше.
+4
Интересно, пишите.
+2
Странно, ссылка не прошла
aeon.catpic.ru/alchemy/
aeon.catpic.ru/alchemy/
0
Круто, конечно пишите. Я вроде давно веб-разработкой занимаюсь, но про alchemy впервые слышу, чувствую себя пещерным человеком. И то что flex-овые приложения великоваты получаются не учел. Ролик без ресайза весит 600 кб, еще сишный image_resize 180 кб.
+1
Насколько я знаю, Alchemy просто транслирует C/C++ код в Actionscript. Ни о каком приросте производительности речи и не идет, т.к. код исполняется все той же виртуальной машиной Actionscript (AVM2).
Тут, скорее, наоборот имеет место снижение производительности, ведь вслед за самой C/C++ программой тянутся все ее include-ы.
Как я понял, назначение этой технологии — портировать существующие алгоритмы во Flash.
Вот небольшая статья про Alchemy: www.automatastudios.com/2008/11/21/understanding-adobe-alchemy/
Тут, скорее, наоборот имеет место снижение производительности, ведь вслед за самой C/C++ программой тянутся все ее include-ы.
Как я понял, назначение этой технологии — портировать существующие алгоритмы во Flash.
Вот небольшая статья про Alchemy: www.automatastudios.com/2008/11/21/understanding-adobe-alchemy/
0
Зачастую идет прирост, на тестах это видно, ибо Alchemy использует несколько недокументированных возможностей as3. Вот одна из них, использование которой в Alchemy дало началу Virtual Memory API в haXe.
Так что не все так просто.
Так что не все так просто.
0
Я сам делал замеры используя разные классы для кодирования изображений в сравнении с тем что дает алхимия, прирост был от 3 до 10 раз. Так что для некоторых целей alchemy очень полезна.
0
скорость получается за счёт работы с ByteArray. в 10м флэше появились «скрытые» операторы работы с ByteArray, которые не доступны обычным смертным, и которые очень активно используются компилятором алхимии.
0
поправочка: не транслирует в Actionscript, а компилирует в байткод AVM2
0
не вчитывался в код, но с виду поразительно похоже на WPF
-5
Анимированный поворот можно делать через <mx:Rotate>, не знаю, насколько это современно, да и там, кажется нет возможности работы с матрицей преобразования. Просто указывается цель target, определяются углы поворота angleFrom и angleTo и используются методы анимации play и stop.
+1
Так и не нашел ссылки на само созданное приложение. Сделали бы демку как это будет выглядеть в итоге?
+4
На Javascript скоро будет File API значительно распространён (пока только Safari 4 и Firefox 3.6), а модификацию изображений можно через Canvas делать (тот же www.pixastic.com/).
0
Где живьем увидеть пример вашего загрузчика? (демо)
+4
UFO just landed and posted this here
Спасибо за советы.
А как бы Вы сделали удаление itemRenderer-ов? Есть, к примеру, в itemRenderer кнопка «удалить» и при клике на нее нужно удалять соответствующий элемент из TileList. Ведь какое-то управление на элементах TileList хочется иметь, те же повороты, удаления, переименовать файл итд. Как правильно это программировать?
Еще совсем общий вопрос — как написать нормальное приложение на flash или flex? Нормальное в смысле целый сайт типа www.nvidia.com/object/cuda_home.html, miniusa.com/ или www.rafinadhome.ru/? Во flex есть сцены, где можно указывать, какие элементы удалить и добавить на страницу, но при большом количестве страниц невозможно не запутаться. + хочется вынести максимум параметров из swf-ника, чтобы не требовалось его компилировать при каждом изменении.
Может быть есть туториал по созданию нормального flash-сайта, подскажете? 7 лет назад, когда я вроде как выучил php, устроился на работу, и коллеги сразу прочистили мне мозги и объяснили, что я ничего не знаю, что есть MVC, и как писать сайт. Сейчас у меня похожие неясности с flash, но не устраиваться же теперь на работу, чтобы все выяснить:). И главный теоретический вопрос — в логической структуре приложения, где делать границу между тем, что должен отдавать некий xml-config и тем, что должно быть зашито в самом swf.
А как бы Вы сделали удаление itemRenderer-ов? Есть, к примеру, в itemRenderer кнопка «удалить» и при клике на нее нужно удалять соответствующий элемент из TileList. Ведь какое-то управление на элементах TileList хочется иметь, те же повороты, удаления, переименовать файл итд. Как правильно это программировать?
Еще совсем общий вопрос — как написать нормальное приложение на flash или flex? Нормальное в смысле целый сайт типа www.nvidia.com/object/cuda_home.html, miniusa.com/ или www.rafinadhome.ru/? Во flex есть сцены, где можно указывать, какие элементы удалить и добавить на страницу, но при большом количестве страниц невозможно не запутаться. + хочется вынести максимум параметров из swf-ника, чтобы не требовалось его компилировать при каждом изменении.
Может быть есть туториал по созданию нормального flash-сайта, подскажете? 7 лет назад, когда я вроде как выучил php, устроился на работу, и коллеги сразу прочистили мне мозги и объяснили, что я ничего не знаю, что есть MVC, и как писать сайт. Сейчас у меня похожие неясности с flash, но не устраиваться же теперь на работу, чтобы все выяснить:). И главный теоретический вопрос — в логической структуре приложения, где делать границу между тем, что должен отдавать некий xml-config и тем, что должно быть зашито в самом swf.
0
Кажется, я видел java-апплеты для такой задачи, но есть смысл поддерживать и флэш тоже. По опыту использования аналогичных приложений/апплетов посоветую протестировать работу сабжа на нестабильном соединении — ситуация, когда апплет наглухо заглючивает при обрыве tcp-соединения, мягко говоря, удовольствия не доставляет. Идеалом в этом отношении вижу google picasa — поставил работу на закачку, и делай дальше асинхронно что угодно — загрузка асинхронна с интерфейсом и восстанавливается после ошибок.
В текущем проекте массовую загрузку файлов мы решили проще — закачкой zip-архива. Благо, никакое изменение файлов вроде пережатия до отправки не требовалось. И нахаляву получили создание на сервере иерархии директорий, соотвествующей иерархии у пользователя.
Итого, имхо, идеал — когда поддерживается и java, и флэш, и загрузка архивом, и загрузка файлов по одному, причём в первых двух случаях загрузка асинхронна — пока загружаются файлы, можно выбрать и поставить следующие, а во вторых двух пользователю показывается progress bar на javascript, показывающий текущий прогресс загрузки в процентах.
В текущем проекте массовую загрузку файлов мы решили проще — закачкой zip-архива. Благо, никакое изменение файлов вроде пережатия до отправки не требовалось. И нахаляву получили создание на сервере иерархии директорий, соотвествующей иерархии у пользователя.
Итого, имхо, идеал — когда поддерживается и java, и флэш, и загрузка архивом, и загрузка файлов по одному, причём в первых двух случаях загрузка асинхронна — пока загружаются файлы, можно выбрать и поставить следующие, а во вторых двух пользователю показывается progress bar на javascript, показывающий текущий прогресс загрузки в процентах.
0
Буду признателен за ответ!
Я добавил переменную — public var count:int;
В ней хранится общее кол-во загруженных файлов count = photos.length;
Также, вместо имени файла, я вывожу порядковый номер(добавил новое свойство num и присваиваю номер текущего элемента, отсчет веду от единицы):
private function addPhotos(e:Event):void
{
for (var i:uint = 0; i < frList.fileList.length; i++)
{
var elem:Object = {fr:FileReference(frList.fileList[i]),num:i};
elem.num = count+1;
elem.fr.load();
elem.fr.addEventListener(Event.COMPLETE,refreshThumb);
photos.addItem (elem);
}
}
В рендере вывожу номер таким образом:
<mx:Label text=«Фото №{data.num}» width=«100%» truncateToFit=«true» bottom=«0» textAlign=«center» />
Вопрос в том, что при удалении фотографии, порядковый номер не меняется. Т.е. если есть 5 фотографий и я удалю 2-ю и 3-ю, то в списке будет порядок – 1, 4, 5, а по логике, после удаления должен быть 1,2,3.
Как сделать чтобы после удаления одной фотографии список обновлялся и перерисовывался? Это нужно для того, чтобы после удаления обновлялся порядковый номер фотографии.
Я добавил переменную — public var count:int;
В ней хранится общее кол-во загруженных файлов count = photos.length;
Также, вместо имени файла, я вывожу порядковый номер(добавил новое свойство num и присваиваю номер текущего элемента, отсчет веду от единицы):
private function addPhotos(e:Event):void
{
for (var i:uint = 0; i < frList.fileList.length; i++)
{
var elem:Object = {fr:FileReference(frList.fileList[i]),num:i};
elem.num = count+1;
elem.fr.load();
elem.fr.addEventListener(Event.COMPLETE,refreshThumb);
photos.addItem (elem);
}
}
В рендере вывожу номер таким образом:
<mx:Label text=«Фото №{data.num}» width=«100%» truncateToFit=«true» bottom=«0» textAlign=«center» />
Вопрос в том, что при удалении фотографии, порядковый номер не меняется. Т.е. если есть 5 фотографий и я удалю 2-ю и 3-ю, то в списке будет порядок – 1, 4, 5, а по логике, после удаления должен быть 1,2,3.
Как сделать чтобы после удаления одной фотографии список обновлялся и перерисовывался? Это нужно для того, чтобы после удаления обновлялся порядковый номер фотографии.
0
Sign up to leave a comment.
Загрузчик фотографий как vkontakte на Flex