(Flex) Flex (2011 год)

Знакомство с Adobe Flex 4

На этой страничке я расскажу о своем знакомстве с платформой Adobe Flex 4. Возможно мои соображения будут полезны многим ASP.NET проггерам, ибо как показал мой личный опыт - мигрировать с ASP.NET на Adobe Flex 4 гораздо комфортнее, чем с ASP.NET на ASP.NET MVC. Тем более в ASP.NET MVC я вообще ничего хорошего не нашел - только постоянное ощущение дежавю - будто бы я уснул вечером в 2011-м году, а проснулся утром уже в 1998-м году и на мой девелоперский кампутер за ночь злобные монстры опять установили Visual Inter Dev пятнадцатилетней давности.

А вот пополнить арсенал любого программиста технологией, которая бы работала на любом Macintosh, на любом Линуксе и любой виндузне - причем не требовала бы изменения ни единой строчки кода для работы в браузере или в виде десктопного толстого клиента - это супер!


Что касается простоты освоения технологической платформы Adobe Flex, то у меня (программиста на Бейсике с опытом работы на бейсике около 15 лет) это заняло неделю с момента когда я только начал задумыватся о Флексе. Я почитал о Флексе немного в инете, потом купил пару книжек и бегло их просмотрел за два вечера. Немного потыкался в Эклипсе, разобрался его перспективами, с отладчиком, поставил себе привычную поддержку Subversion и через неделю с начала всей этой движухи сел и за два вечера написал свой первый компонент на флексе.

Думаю, тот кто прочитает эту страничку - может съэкономить себе эту неделю.


Технологическая основа Adobe Flex - это флеш плеер, который по официальным данным присутствует у 99,1% пользователей компьютеров. Остальные 0,9% - это примерно количество душевнобольных среди населения или тех кто действительно голосует на выборах за "Е...ную Россию".

Думаю, существованием этих отдельных нездоровых индивидуумов мы можем пренебречь и с большой степенью точности можно считать что практически любой кампутер в мире имеет виртуальную машину, умеющую интерплетировать байт-код, созданный по технологии Adobe Flex. Однако бутстрап, автоматически прикручиваемый к стандартному SWF-файлу ФлексБилдером как раз и рассчитан на эти нездоровые 0,9%. Он отжирает ресурсов больше чем созданный мною флеш-компонент, тыкается при каждом рефреше странички в Адоб, чтобы сгрузить оттуда логотип Adobe Flash Player (чтобы предложить им установить плеер) и вообще адско тормозит. Поэтому этот бутстрап (для реальных сайтов) хочется выбросить в первую очередь.


В Adobe Flex можно комфортно программировать в нескольких платных и бесплатных средах (список OpenSource-решений для Flash ведет osflash.org). Начнем с родной Адобовской среды Flex Builder 4.


Сама по себе среда эта платная, точнее Flex Builder - это платный плагин за $249 к OpenSource-среде Eclipse. Но есть пара лазеек.

Во-первых, вы есть 60-ти дневный ознакомительный период. Это немаленький срок, за год вам придется всего лишь шесть раз перерегистрироваться. Как это делается? Ну не думаю, что технологиям борьбы с жадностью надо учить - у нас жадность так косит правящую бандверхушку (и выражающую ИХ интересы государственную машину) - что у нас методики борьбы с жадностью впитываются буквально с молоком матери. Ну худой конец снимите бекап своей виндузни акронисом перед установкой триала, после истечения двухмесячного срока восстановитесь и поставьте новый триал опять. Или тупо поставьте триал на виртуалку, а потом откатитесь в один клик мышкой снапшот-менеджером - так за год придется сделать аж шесть кликов мышкой.

А можно сделать еще проще и съекономить себе эти шесть кликов мышкой - ведь для учебных заведения и даже ДЛЯ ОТДЕЛЬНЫХ СТУДЕНТОВ КЛЮЧИ ВЫСЫЛАЮТСЯ БЕСПЛАТНО. Загрузите скрин своего студенческого на эту страничку, заполните все правильно и ключ вам вышлют! Единственное, что небыстро - минимум через две недели. Кстати, одной моей знакомой девушке выслали в подарок к 8-му марта аж три ключа.

Но бесплатные ключи Adobe дарит лишь для Standard версии. О сравнительных возможностях версий Adobe Flex Builder смотрите на вкладке Version Conparition этой странички. Фактически максимальная версия отличатся от минимальной лишь наличием инструментов оптимизации и тестов. Если вы только начинаете работать - без этих инструментов пока можно обойтись.


Установка Adobe Flash Builder совершенно тривиальна, буквально несколько тычков мышкой и у вас устанавливается стандартный Eclipse 3.51 с платным адобовким плагином. Вам остается только выбрать WokrSpace (рабочий каталог всех ваших Flex-проектов) и вперед.



На что я бы обратил внимание. Во-первых, есть смысл сразу себе сгрузить Tour De Flex. Это замечательный комплект из 634 приложений на Flex с открытым исходным кодом, начиная от минимальных примеров использования каждого контрола и до крученых 3D-приложений и приложений с картами.



Во-вторых, следует выполнить все апдейты как самого Flex Builder, так и Help-а к нему. Кстати, обратите внимание, что Help существует русский.



Лично я себе сразу же поставил поддержку SVN (подробнее про Subversion у меня описано на страничке посвященной SVN):



Увы, у меня сразу не пошел Debug в Фаерфоксе. Как оказалось, нужен специальный Plug-in для Flash-плеера Flash Player 10.2 Plugin content debugger (for Netscape-compatible browsers). IE я не пользуюсь принципиально, но такая же приблудка существует и для IE - ActiveX Debug Flash Player for IE.



Кстати, для ФаерФокса существует автоматический декомпилятор байт-кода Flash обратно в исходники. Но не ставьте его без острой необходимости. Он работает, но машина тормозит просто адско. Даже у приличного современного многопроцессорного кампа на Ксеонах проц от этого ЯваСкрипта стоит постоянно более 80%.



Для тех, кто работал в Visual Studio рассказать похоже больше нечего. Eclipse практически ничем не отличается от Visual Studio 2010 (кроме того, что он полностью бесплатный). Все довольно привычно - например можно в перспективе отладчика менять код онлайново, чего нельзя делать в Visual Studio для Win-приложений, но можно для Web-приложений.



Технология работы ничем не отличается от работы на Бейсике в Visual Studio. Все что натыкаешь мышкой в IDE в итоге компилируется в код ActionScript 3.



Есть шаблон странички (о которой говорилось выше), которая проверяет наличие Flash-плеера в любом браузере и в любой среде и предлагает его поставить.



Язык ActionScript процентов на 90% похож на JavaScript, но только работает не в среде браузера, а в песочнице флеш-плеера. Принципиально она похожа на песочницу JavaScript, но адобовским фреймворком расширена в сторону разнообразных визуальных эффектов. Ну и конечно, это компактный откомпилированный код, а не исходники, которые браузер в один поток должен обрабатывать начиная с лексического разбора.

Поэтому любой Web-программист может открывать любое Flex IDE и писать какие-то простые вещи на ActionScript сразу, без раздумий - как код JavaScript. Этому помогает прекрасная подсказка и отладчик.



Но так получится делать лишь какие-то простейшие вещи, по логике соответствующие ЯваСкрипту или AJAX. Для профессионального программирования (например анимации) надо знать фирменный адобовский фреймворк, а он весьма немаленький. На полное овладение этими классами потребуются годы упорного труда. Ну здесь отладчик и онлайновая подсказка не поможет конечно - только опыт, форумы, книги.







Для бескомпромиссных проггеров существует полностью OpenSource среда FlashDevelop. По большому счету мне надо было начать с нее (тем более я большой сторонник развития OpenSource, отлично знаю NET 2.0 и MONO), но каюсь, в этом случае я дал слабину чтобы осваивоить Флеш побыстрее начал с FlexBuilder. Возможно я займусь этим позже, ибо виндузня просто бесит (и я все время надеюсь окончательно выковырнуть ее со своего последнего кампутера), а FlashDevelop похоже возможно запустить в Linux на Mono.

Прога ставится отлично и отлично работает (включая подсказку и отладчик). Все сделано с иконками Visual Studio и таким же управлением окнами. Так что проггерам, чей мозг травмирован Билом Гейсом, даже не потребуется привыкать к Эклипсу.



Проект FB у меня не нормально импортировался (хотя возможно я чего-то не понимаю), но со своим проектом FlashDevelop отлично работает. Сразу бросилось в глаза, что html-страничка для хостинга SWF-БайтКода у нее минимизированная, а не такая адская, как у FlexBuilder. Вокруг плеера только простая обертка SWFObject - ровно такая, как я описал четыре года назад на своей страничке Мультимедиа на Web-страничках. Кроме того, FlashDevelop умеет работать и на AS2 и на AS3 и на OpenSource-реализации языка ActionScript. Есть отличная вставка готовых языковых шаблонов-снипетов. Даже профайлер байт-кода присутсвует в минимальной инсталяции (а в Адобовской FlexBuilder он входит только в максимальную версию).



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



В целом впечатление от FlashDevelop 3 - она явно работоспособна (и если бы она пошла в Linux - ей бы цены не было, потому что в OpenSource-среде Linux есть только платный FDT), в FlashDevelop вполне возможно писать и отлаживать скрипты на Flex и ActionScript - но до Adobe FlexBuilder ей пока еще далеко. Например, как в FlashDevelop работает визуальный редактор Flex-компонентов - я так и не понял. Ее качество мне напомнило MonoDevelop - работать вполне возможно, но если ты хочешь работать быстро и зарабатывать своей работой какие-то приличные деньги - надо выбирать более навороченную среду программирования.

Жаль, что я не миллиардер - я бы не пожалел помочь программистам деньгами на развитие OpenSource и вот такие существующие узкие места в OpenSource-среде Linux (как Flash-IDE, как MONO-IDE, как GUI к фаерволам и почтовикам) я довел бы до приличного состояния - как Novell/IBM/Oreacle/Sun и др. сделали великолепные Yast2, OpenOffice, NetBeans, Apache, Eclipse и еще 2700 пакетов программ, большинство из которых даже превышает по качеству платные программные пакеты c закрытым программным кодом для виндузни.






Cуществует платный PlugIn к Visual Studio 2010 для Flash/Flex девелопмента Amethyst.

Увы, этот плагин у меня так и не заработал в полном виде (с дизайнером). Это только подтверждает мою концепцию - важнейший, базовый, расширяемый программистами софт (такой как операционные системы, IDE, всевозможные сервера) должен быть только OpenSource (и даже в этом случае не гарантирована стопроцентная работа плагинов к базовому софту - как мы увидим ниже на примере Эклипса). А софт, который принадлежит одному человеку? Который в любой момент по собственному усмотрению вносит (ни перед кем не отчитываясь) ЛЮБЫЕ изменения в него? И какой смысл парится и писать к такому софту плагины? Это называется - АРТЕЛЬ "НАПРАСНЫЙ ТРУД"!

Я не поленился для Аметиста выставить новую чистую Visual Studio 2010 (в этом вы можете убедиться на скринах). Но это мне никак не помогло - билогейтсовская студия написала Designer: FlashFirebug_Start и зависла. Хотя, как я понял - там на панели тулбокса предполагалось появления контролов Аметиста.

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









Есть еще некая FreeWare-среда разработки на Flash - Tofino - которая тоже устроена как PlugIn к Visual Studio 2010. Что это за среда - я не понял. В подтверждение моих слов выше про Артель "Напрасный труд" она не сумела открыть внутри билогейтсовской студии даже ей же самой созданный проект.








Существует несколько платных пакетов для девелопмента во Flash/Flex, FDT4 отличается от всех прочих платных пакетов тем, что идет не только на устаревших операционных системах c закрытым кодом (Windows и Mac OS), но и на OpenSource Linux.

Однако, и эта система меня не впечатлила. Насколько я понял, у нее теоретически (судя по плагинам) - должен работать графический плагин из Eclipse. То есть по идее это должно работать как Adobe Flex Builder - drag-and-drop контролов и прочее. Увы, у меня этот плагин так и не заработал. Даже на встроенных примерах с графикой. А без этих важных фишек эта платная среда становится практически бесмысленной и проигрывает даже OpenSource IDE FlashDevelop (по крайней мере в нем не надо было вручную вводить CDATA в MXML).

Хм, а стоит ли вообще гадить в Linux платным софтом (даже если бы FDT4 заработал нормально)?









Cуществует несколько платных пакетов для интеграции Flash и MS Visual Studio. WebORB, как я понял, позволяет не только вести полноценный девелопмент и отлдку Flash в Visual Studio, но также имеет плагин, который можно догрузить в Eclipse для FleX Builder. Насколько я понял эта среда позволяет непосредственно из NET выполнять операции внутри виртуальной машины Flash.

Возмем например самую типичную задачку web-программирования, которая, увы, на ASP.NET нереализуема вовсе. Есть основная форма, юзер тыкнул в нее и в target="_blank" открылась форма с плеером. Далее юзер тыкает дальше и хочет добавлять к своему списку прослушивания новые и новые ролики, которые должны добавляеться на форме с Flash-плеером. Это совершенно типовая задачка - за прошлый год мне попалось несколько таких проектов. По этому же типовому шаблону устроены например и формы Радио Свободы.

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

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

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








А вот системой RED5 я уже полностью проникся. Это один из многих знаменитых OpenSource-Flash проектов.

Этот сервер я уже себе поставил на виндузовой и линуксовой и пытаюсь ковырять в нем что-то. Грубо говоря это OpenSource-реализация фирменного адобовского FlashMediaServer, то есть той самой компоненты, которая на сервере выполняет операции, заказанные Flash-плеером для проигрывания медиа-потоков. Например мгновенная прокрутка видео вперед, буферизация, парсинг тегов MP3, операции в базе и прочее.

Увы, пока для эффективного изготовления application для Red5 у меня не хватает знаний Ява-платформы.










Для погружения в мир Flex я приобрел себе несколько книжек. Первые две совсем для начинающих - я практически не выдержал их читать, только бегло просмотрел их перед тем как делать свое первое приложение на Flex. До сего момента я никогда на флеше не писал (я пишу в основном на Бейсике года с 1998 года, а до этого лет двадцать писал на разных языках от PL/I и Clipper до Ассемблера) - но в первых двух книжках особых открытий для меня не было. В этих книгах показаны какие-то мелкие фишки платформы Flex. Например в Бейсике любой массив служит источником привязки. Здесь только тот, у которого есть атрибут [Bindable]. Или например в Бейсике понятия биндинга Source и Target имеют противополжные смыслы. Но в принципе это мелочи к которым надо просто привыкнуть.

Что касается третьей книги - то в ней пережевываются абстракции обьектного программирования. Своего рода воздушные замки - которые строит В ГОЛОВЕ у себя некий программист чтобы как-бы уложить В СВОЕЙ (но не моей!) голове логику поведения его программы. Хочу сразу пояснить что я в совершенстве владею объектным подходом (правдя когда делаю свои обьекты, а не пытаюсь понять логику работы чьих-то обьектов). Разве вообще какой-то язык развит в той степени же степени обьектного программирования, как Бейсик? в 1992 году в Бейсике 4 работали только на обьектах, в Экселе где появился впервые Бейсик - тоже все можно было сделать только на обьектах. А уже в шестом бейсике от 1996 года все работали ТОЛЬКО в обьектах (анонимных типах, которые пару лет назад появились даже в убогом шарпе). Еще раз поясняю для людей с разжиженными мозгами - пятнадцать лет назад все-все-все бейсик программисты писали контролы, писали свои COM-обьекты, работали с анонимными типами - то, чему убогие шарперы только учатся сегодня - Бейсик программисты это все прошли 15 лет назад. Сейчас я лишь иногда иногда учу начинающих обьектному подходу и применению различных хитрых обьектных квалификаторов Бейсика - Практическое применение наследования, полиморфизма, интерфейсов, дженериков и делегатов на примерах в Visual Basic .NET. Но я не считаю ОБЬЕКТНЫЙ ЭКСТРЕМИЗМ единственно правильным и наилучшим подходом к проектированию. Это тупиковая ветвь эволюции, копчик и апендикс одновренно, пятый сон Веры Павловны (как вы помните, ей приснилось в пятом сне, что коммунизм - это лучший способ общественного устройства и этот ее ночной бред стал идеологическим обоснованием многолетнего коммунистического мракобесия). Обьектный подход - это лишь ночной бред Вирта, который как вирус распространился и поразил умы парадоксальностью своего взгляда на простые вещи. И уж тем более производные этого ночного бреда Вирта - такие как MVC - я не считаю лучшим подходом. Обьектный подход - это лишь очень-очень однобокий и cпециальный взгляд на вещи. Один из великого множества подходов. Я знаю проггеров на PERL, где тоже нет никаких обьектов, а есть только игрища со строками и регулярными выражениями. Даже в супер-пупер популярном языке PHP обьекты появились совсем недавно, как дань моде. В конце концов у меня были агроменные и чрезвычайно долгоживущие проги на Клиппере, которые жили долго именно в силу отсутствия обьектов в Клиппере и логичного построения этих программ. А сколько живут хорошо написанные SQL-процедуры? Вечно. А где в SQL объекты? А сколько живут XSLT-шаблоны и XSLT-транформации? Тем более вечно. Эти мои проги были гораздо более долгоживущими и понятными, чем проги на обьектах, написанные на Бейсике. Долгожительство, удобство и практичность этих моих прог не в последнюю очередь вызваны отсутствием на языковом уровне поддержки обьектов. И другими, более ясными подходами к проектированию. Вы спросите - какая альтернатива обьектам? Отвечу - например параметризация/функции прекрасно заменяет полиморфизм и наследование. XML тоже заменяет объектный подход, командный подход (команда/аргументы) заменяет обьектный подход. Подход с пользовательскими калбеками тоже заменяет обьектный подход (так пишут на Ассемблере). Реляционный взгляд на вещи тоже заменяет обьектный подход. Поэтому я воспринимаю этого индустского темнилу Чандиму Кумарантунга c его шаблонами для обьектного проектирования как торговца кремом для оргазма (который при этом еще и утверждает, что стал на продажах своего чудо-крема миллиардером).

Попробую обьяснить это еще раз, но языком понятным для индусов. В своей книге автор приводит пример с унитазом и рассказывает каким полезным приспособлением к унитазу является крышка для унитаза. Поясняю для индусов. Так сказать общий привет от одного русского проггера целому миллиарду индусов (каждый из которых, судя по всему не только восхищен крышкой от унитаза, но и подрабатывает в своем курятнике и свинарнике за доллар в день обьектным проектированием и обьектным программированием). Крышка для унитаза лишь в голове у этого конкретного индуса является свойством ИМЕННО унитаза. С таким же успехом я могу рассматривать крышку для унитаза и принадлежностью туалетной комнаты и даже целой жилой квартиры в целом. Или членом коллекции сантехнических приспособлений для отправления естественных нужд (вместе с зубной щеткой и бритвой). Где я должен искать эту крышку для унитаза когда она мне понадобится? В каком обьекте у того или иного индуса? Их ведь целый миллиард! И все обьектно программируют! Эти воздушные замки у них в голове лишь затрудняют для остальных понимание простейших вещей. Где я должен искать XML-ридер, который прочитает XML-файл с диска в память? В обьекте чтения потоков с диска? В обьекте ведения MemoryStream, который ведет байтовые потоки в ОЗУ кампутера? Или в обьекте специфических операций с XML? Это лишь самая простая мысль - надеюсь доступная даже индусу. Еще большая чехарда начинается (не сравнимая по гиморойности с GOTO) - в проектах, в которых активно используется полиморфизм и наследование. Одно и то же всегда называется называется одинаково - сортир, но вдруг оказывается что это имеется ввиду дачный сарайчик с выгребной ямой, а потом вдруг по трудноуловимому мановению волшебной палочки оказывается что речь идет о детском горшке. При этом имя этого предмета постоянно остается одним и тем же - объект-сортир. Уверен, что наличие в голове у проггера множества труднопонимаемых для посторонних воздушных замков - существенно снижает качество его софта (по крайней мере на этапе сопровождения).

А вот четвертая книга мне понравилась - в ней 300 решений, которые надо держать в голове как базовую матрицу решений. Практически каждый рецепт в ней - это для меня полезное открытие в мире Flash. Хотя самых важных рецептов она, увы не содержит. Например всю анимацию (которую флешеры делают в IDE Flash) можно описать на уровне MXML-тегов Flex несколькими тегами Animate, AnimateColor, AnimateFilter, AnimateTransform, AnimateTransform3D, AnimateTransitionShader, Animation (и их многочисленными атрибутами). Увы этой информации по анимации в этой книге нет.

Пятая книга Мука просто адская. Там есть все, что вообще нужно для написания прог на AS3. Но читать ее невозможно. Например, что такое массив - Мук в муках пережевывает на 15-ти страницах. а преобразование типов оператором AS - на двадцати страницах. 60 страниц у него ушло чтобы рассказать об XPATH (который здесь называется E4X) и еще пятьдесят страниц, чтобы рассказать что такое NameSpace - никакие нервы не выдержат читать такое. Засчет этого в толстющей книге почти на 1000 страниц собственно специфика флеша начинается лишь к концу. И ее немного относительно общего обьема книги. К чести Мука надо сказать, что относительно любителя крышек для унитаза - об обьектном программировании он высказался всего на 30-ти страницах. Вполне достаточные знания, чтобы обьектно программить на AS3. По-моему, муку с книгой Мука может выдержать только тот, кто вообще начинает программить с нуля и у кого вообще нет и никогда не было других книг по программированию.



Последняя книга (как и четвертая) мне тоже очень понравилась. Короткий справочник и все по делу. Жаль только что такого справочника у меня нет по Flex, а есть только по AS3. А Flex - это не AS3. Они соотносятся друг к другу примерно как ASP.NET и всякие полезные библиотеки NET, типа System.Data. Программирование на Flex - это умение решать поставленную задачку как на ASP.NET - сотней XML-тегов (и их тысячами атрибутов). И умение решать задачку по программрованию на AS3 c грамотной Flex-разметкой - прямо не связаны. Так вот, достаточно подробной книги собственно по Flex 4 я не так и не нашел.

И еще одной самой для меня важной книги среди этих книг, увы, тоже нет. Все приложения на Flex, которые у меня крутятся в голове - это какие-то трехмерные динамично меняющиеся конструкции. Например струны рвутся на гитаре и завиваются в название музыкального ролика (с учетом предпочтений и предыдущих прослушанных роликов), шарики падают и раскалываются и на сколе в них видны название туров для отпуска (естественно данные онланово вычитываются собственно с сайта с учетом оплаченного количества показов), кубик-рубика крутится гранями и на них отображаются название разделов моего сайта software/terminal/mono/asp/sql/net/linux/notes. Как сделать такие 3D-модели (в Blender или в чем? в SWiSHmax все это сделать невозможно), как реалистично сделать их движение, как наложить шрифт на грани, как наложить игру теней на грани, как импортировать эти модели во Flex - знаний этих мне не хватает и в указанных выше книгах этого нет. Это ведь уже не только умение пользоваться указанными выше Flex-тегами например для анимации (что уже само по себе на голову выше просто AS3-программирования по чужой Flex-верстке) - это еще более высокий уровень Flex-программирования. Уровень, позволяющий решить задачу создания сайта/ролика от начала до конца в сжатые сроки и в одни руки (как это у меня довольно неплохо и без напряга получается делать на ASP.NET последние лет пять). В общем мне хотелось бы срастить то, что я уже умею делать с растровой и веркторной графикой на данный момент в фотошопе и флеше с изготовлением 3D-моделей, программированием и анимацией этих моделей во Flex. Такой книги я пока, увы не видел.



Comments ( )
Link to this page: //www.vb-net.com/Flex4_Welcome/index.htm
< THANKS ME>