User's collector

Внимание!   Данная опция будет доступна только после того, как вы авторизуетесь.
   запомнить меня 

Создание swc-библиотек — задача, с которой рано или поздно сталкивается каждый actionscript-разработчик, и способы ее решения зависят во многом от тех инструментов, которые есть в распоряжении программиста. В своей работе я стараюсь минимально использовать возможности среды, насколько это возможно, разумно и позволяют условия, поэтому описанные в статье действия минимально привязаны к возможностям конкретной среды разработки и могут быть с легкость выполнены в рамках любой IDE, использующей Flex 3 SDK.
Однако, дабы материал был более предметным, в качестве среды разработки я использовал FDT. В любом случае, весь процесс сборки будет возложен на плечи Ant, так что, как я уже сказал, повторить приведенные действия в другой среде разработки будет не сложно. Приступим.

В качестве примера создадим swc, содержащий в себе два простых, но, на мой взгляд, весьма полезных класса — CookieManager и FirebugConsole. Начнем с создания нового проекта — File → New → New Flash Project. В появившемся окне диалога задаем имя проекта, его расположение, версию ActionScript, а также указываем, что хотим использовать Pure AS(Flex 3).

Приступим к созданию структуры проекта. Для этого создадим основные директории:

  • bin — в эту папку будет скомпилен наш итоговый swc;
  • src — директория с файлами исходных кодов (после создания, необходимо добавить эту папку в Classpath);
  • build — здесь будут располагаться файлы, отвечающие за процесс сборки swc-библиотеки.

Как только все директории созданы, можно приступать к их наполнению. Для начала в папке src разместим исходные коды, думаю здесь сложностей возникнуть не должно. Следующий этап — создание файлов в директории build. Нам потребуются следующие файлы:

  • local.properties — файл, в котором будут прописаны пути до компилятора в локальной системе;
  • build.properties — файл, с параметрами сборки;
  • build.xml — собственно сам build-файл;
  • compc-config.xml – конфигурационный файл для компилятора compc.

Самое время приступить к наполнению вышеперечисленных файлов. Начнем с local.properties:

flex.sdk.dir=E:/tools/flex3sdk
compc.path=${flex.sdk.dir}/bin/compc.exe

В первой строке мы прописали путь до Flex SDK, во второй — относительно него указали путь до компилятора compc, так что правим только первую строку согласно своим условиям и переходим к build.properties:

source.dir=${basedir}/src
output.dir=${basedir}/bin

output.file=riafactory.swc

Здесь тоже все весьма просто, указали пути до src и bin, а так же прописали имя файла нашей swc-библиотеки.

Если все готово, переходим к написанию build-файла. В нашем случае он будет небольшим, и состоять из двух задач: build и compile.swc.

<?xml version="1.0" encoding="utf-8" ?>
<project name="RIAFactory classes" basedir=".." default="build">

	<property file="build/local.properties" />
	<property file="build/build.properties" />

	<property name="compc.args" value="-load-config '${output.dir}/compc-config.xml'" />

	<target name="build">
		<antcall target="compile.swc" />
	</target>

	<target name="compile.swc">
		<filter token="flex.sdk.dir" value="${flex.sdk.dir}" />
		<filter token="source.dir" value="${source.dir}" />
		<filter token="output.dir" value="${output.dir}" />
		<filter token="output.file" value="${output.file}" />
		<copy file="${basedir}/build/compc-config.xml" tofile="${output.dir}/compc-config.xml" filtering="true" />
		<exec executable="${compc.path}">
			<arg line="${compc.args}" />
		</exec>
		<delete file="${output.dir}/compc-config.xml" />
	</target>

</project>

Как вы наверно обратили внимание, компилятору передается единственный параметр –load-config указывающий путь до конфигурационного файла. По сути, использование конфигурационного файла является альтернативой передачи множества параметров компилятору, а поскольку build.xml в идеале должен отвечать только за последовательность этапов процесса сборки, то, на мой взгляд, этот подход является предпочтительным.

Переходим к compc-config.xml:

<?xml version="1.0" encoding="utf-8"?>
<flex-config>
	<compiler>
		<external-library-path>
			<path-element>@flex.sdk.dir@/frameworks/libs/player/playerglobal.swc</path-element>
		</external-library-path>
		<source-path>
			<path-element>@source.dir@</path-element>
		</source-path>
	</compiler>
	<output>@output.dir@/@output.file@</output>
	<include-classes>
		<class>ru.riafactory.external.FirebugConsole</class>
		<class>ru.riafactory.net.CookieManager</class>
	</include-classes>
</flex-config>

В конфигурационном файле мы прописали путь до playerglobal.swc, относительно корневой директории Flex SDK, указали пути до src и до итоговой swc-библиотеки, а также перечислили те классы, который хотим включить в наш swc-файл.

Примечание: узел <include-classes> можно опустить, в этом случае компилятор вкомпилит все найденные классы в директориях указанных в source-path, однако наличие этого узла позоляет вам точно знать, какие классы будут вкомпилены.

Теперь все готово, чтобы собрать swc. Открываем панель Ant (Window → Show View → Ant), в ней нажимаем на кнопку Add Buildfile, выбираем build.xml, после чего выделяем его в панели и нажимаем Run the Default Target of the Selected Buildfile. В консоли должны появиться сообщения о ходе сборки, среди которых самым приятным для нас должно стать BUILD SUCCESSFUL. Если все так, смотрим в папку bin (не забывая сделать Refresh во Flash Explorer) и видим там свежесобранный swc.

На этом можно было и закончить, если бы не один момент. Получившийся swc будет отлично подключаться к проектам, разрабатываемых в средах, использующих Flex SDK, однако все попытки подключить его к проекту во Flash IDE путем копирования в папку Flash-компонентов будут тщетны.

Причина этому на самом деле проста и в определенной степени логична. В панели Components появляются только те swc, который содержат в себе компоненты. Хотя точнее будет сказать, Flash просматривает swc на предмет наличия в нем компонентов и, если таковые имеются, отображает их в панели. Таким образом, чтобы Flash увидел наш swc и позволил использовать классы, находящиеся в нем, нам придется перекомпилировать swc, указав, что в нем имеются компоненты.

Для этого нам потребуется manifest.xml. Справедливости ради, стоит отметить, что манифест служит ни сколько целям компиляции Flash CS3 совместимых swc, сколько огранизационным целям, по крайней мере, так гласит документация. И так, приступим к написанию manifest.xml, предварительно создав его в директории src.

<?xml version="1.0" encoding ="utf-8"?>
<componentPackage>
	<component id="FirebugConsole" class="ru.riafactory.external.FirebugConsole" />
	<component id="CookieManager" class="ru.riafactory.net.CookieManager" />
</componentPackage>

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

Теперь, когда у нас есть manifest.xml, нам потребуется немного изменить параметры компиляции. Начнем с build.properties, добавим в него пару строк:

namespace.uri=http://www.riafactory.ru
namespace.manifest.file=manifest.xml

В первой строке, мы указываем uri пространства имен наших компонентов, во второй — имя файла манифеста.

Далее внесем изменения в build.xml. Теперь задача compile.swc выглядит следующим образом:

<target name="compile.swc">
	<filter token="flex.sdk.dir" value="${flex.sdk.dir}" />
	<filter token="source.dir" value="${source.dir}" />
	<filter token="output.dir" value="${output.dir}" />
	<filter token="output.file" value="${output.file}" />
	<filter token="namespace.uri" value="${namespace.uri}" />
	<filter token="namespace.manifest.file" value="${namespace.manifest.file}" />
	<copy file="${basedir}/build/compc-config.xml" tofile="${output.dir}/compc-config.xml" filtering="true" />
	<exec executable="${compc.path}">
		<arg line="${compc.args}" />
	</exec>
	<delete file="${output.dir}/compc-config.xml" />
</target>

Ну и последнее, что нам потребуется сделать — это внести соответсвующие поправки в compc-config.xml, после которых он должен выглядеть так:

<?xml version="1.0" encoding="utf-8"?>
<flex-config>
	<compiler>
		<external-library-path>
			<path-element>@flex.sdk.dir@/frameworks/libs/player/playerglobal.swc</path-element>
		</external-library-path>
		<source-path>
			<path-element>@source.dir@</path-element>
		</source-path>
		<namespaces>
			<namespace>
				<uri>@namespace.uri@</uri>
				<manifest>@source.dir@/@namespace.manifest.file@</manifest>
			</namespace>
		</namespaces>
	</compiler>
	<include-namespaces>
		<uri>@namespace.uri@</uri>
	</include-namespaces>
	<output>@output.dir@/@output.file@</output>
	<compute-digest>false</compute-digest>
	<include-classes>
		<class>ru.riafactory.external.FirebugConsole</class>
		<class>ru.riafactory.net.CookieManager</class>
	</include-classes>
</flex-config>

Теперь снова откомпилируем наш swc и попробуем его подключить к Flash CS3. Для этого скопируем его в директорию с Flash компонентами (можете создать там отдельную папку для сторонних swc):

  • для Windows C:\Program Files\Adobe\Adobe Flash CS3\en\Configuration\Components
  • для MacOS HD:Applications:Adobe Flash CS3:Configuration:Components

Теперь запускаем Flash, открываем панель Components (Window → Components или Ctrl+F7) и видим в ней компоненты из нашего swc (если Flash уже запущен необходимо сделать Reload из контекстного меню панели).

Теперь перетаскиваем компоненты в Library, после чего смело можем пользоваться классами из swc во Flash CS3. Ну а в качестве проверки можем вставить в первый кадр следующий код:

Actionscript:
  1. import ru.riafactory.net.CookieManager;
  2. import ru.riafactory.external.FirebugConsole;
  3.  
  4. trace(CookieManager);
  5. trace(FirebugConsole);

После чего нажимаем Ctrl+Enter и видим в Output:

[class CookieManager]
[class FirebugConsole]

Что означает, что Flash прекрасно видит классы из swc. Архив с FDT проектом.

Напоследок несколько заключительных слов. Использование конфигурационного файла вместо множества параметров, как показала моя практика, является более удачным подходом, поскольку все параметры компиляции собраны в одном специально предназначенном для этого файле. Конечно, работая во Flex Builder, большинство параметров можно задать используя диалоговые окна, однако многие разработчики используют альтернативные IDE.

Еще один момент, который стоит отметить. В панели Components Flash IDE, отображаются все компоненты, входящие в состав swc, а точнее перечисленные в файле catalog.xml, который находится внутри swc-библиотеки. Здесь есть важный момент, перетаскивая в Library один из компонентов, мы фактически импортируем все классы, расположенных в том же swc. Это легко проверить, удалите из Library один из добавленных компонентов и попробуйте снова скомпилировать приложение, результаты вызовов trace останутся неизменными. В этом случае, если в состав вашего swc входит библиотека классов, не являющихся компонентами как таковыми, то более красивым решением будет создание пустого класса, своим названием характеризующего обшие задачи библиотеки. Скажем, если в swc расположена библиотека классов логгинга, то общий класс может называться LoggingClasses или что-нибудь в этом роде, и именно его следует указать в качестве единственного компонента входящего в swc.

Что касается создания визуальных компонентов для Flash CS3 силами Flex SDK, здесь, к сожалению, не могу дать каких либо полезных замечаний. Единственный известный мне способ создания таких компонентов — использование Flash IDE и класса fl.livepreview.LivePreviewParent. Если, кто-то знает решение обозначенной задачи, милости прошу в комментарии.

Ну и наконец, тем из вас, кто дожил до этих строк и кому представленного материала показалось мало или остались вопросы, несколько ссылок по теме:

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

Теги:

Думаю, что многим было бы интересно попробовать новые возможности, появившиеся в Flash Player 10 beta, однако не все еще знают, как можно по-быстрому организовать компиляцию роликов под эту версию плеера. Ниже, в виде краткой пошаговой инструкции, я расскажу о том, как можно очень быстро настроить среду разработки FlashDevelop для сборки роликов «под десятку».

Настраиваем инструментарий

Первым делом качаем сборку 2297-ой SVN-ревизии FlashDevelop IDE. Распаковываем содержимое архива в папку C:\Program Files\FlashDevelop\. Создаем на рабочем столе ярлык для файла C:\Program Files\FlashDevelop\FlashDevelop.exe.

Далее с этой страницы скачиваем последнюю ночную сборку Flex 3 SDK, содержащую компиляторы под Flash Player 10. На момент написания статьи самой последней была сборка под номером 3.0.1.2023, датированная 11-ым июнем 2008 года. Для удобства, распаковываем содержимое архива в папку, как можно более близкую к корню диска. Например, в C:\flex_3_sdk\.

Далее заменяем следующие узлы в файле C:\flex_3_sdk\frameworks\flex-config.xml:

<path-element>libs/player/9/playerglobal.swc</path-element>
...
<path-element>libs/player/9</path-element>

на:

<path-element>libs/player/{targetPlayerMajorVersion}/playerglobal.swc</path-element>
...
<path-element>libs/player/{targetPlayerMajorVersion}</path-element>

Это позволит использовать текущую Flex 3 SDK в качестве так называемой «Custom SDK» во FlashDevelop AS3 проекте, а так же свободно переключаться между 9 и 10 целевыми версиями создаваемых роликов.

Теперь загружаем автономный Debug Flash Player 10 beta и сохраняем файл в любом подходящем месте. Я сохранил его в папке с Flex 3 SDK. Запускаем FlashDevelop и прописываем полный путь к плееру в параметре Tools → Program Settings → FlashViewer → External Player Path.

Конфигурируем проект

Создаем новый ActionScript 3 проект (Project ⇒ New Project… ⇒ ActionScript 3 ⇒ Default Project) и как-нибудь называем его. Щелкаем правой клавишей по названию проекта в панели «Project» и в появившемся меню выбираем пункт «Properties…». В закладке «Output» в качестве целевой версии плеера выставляем «Flash payer 10» и выбираем пункт «Play in external player» в выпадающем списке «Test movie». Переходим на закладку «Compiler Options» и в параметре «Custom Path to Flex SDK» задаем полный путь к папке с Flex 3 SDK. Т.е. в нашем случае значением этого параметра будет строка C:\flex_3_sdk\.

Затем здесь же задаем полный путь к библиотеке C:\flex_3_sdk\frameworks\libs\player\10\playerglobal.swc в параметре «External Libraries». Нажимаем последовательно кнопки «Apply» и «OK».

На этом все. Теперь мы имеем настроенную IDE, с поддержкой новых классов и конструкций языка, появившихся в Flash Player 10 beta, а так же возможность компилировать ролики под эту версию плеера. Желаю вам интересных экспериментов!

3 комментария

Теги:

В число самых ожидаемых мною программных продуктов, безусловно, входит Saffron UML Tool. Тем, кто не слышал или слабо представляет себе, о чем идет речь, следует почитать пост Роста об этом инструменте и посмотреть на эту красоту.




К чему это все я, последний пост в блоге разработчика Samuel Agesilas'a датирован февралем этого года, в котором содержится не двусмысленный намек на дату релиза этого инструмента. Но «воз и ныне там». Периодически заглядываю почитать комментарии, и вот недавно наткнулся на интересный комментарий, оставленный неким Jeff D. Привожу его целиком без перевода, как есть:

I can confirm that having talked to Sam last night, Saffron has been bought by Microsoft and will no longer be released as an AS3/Air app. Sam is currently working with Microsoft engineers to move the code base over to WPF/Silverlight with a view to a release in Q1 next year as an online app available as part of the Visual Studio package.

Не берусь судить насколько это правда, но никаких опровержений или подтверждений от Самуэля до сих пор нет. Неужели мы потеряли Saffron?

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

Теги:

Android Robot Как и планировалось, 12 ноября был выложен для свободного скачивания инструментарий разработчика под новую мобильную платформу от Google — Android SDK. Так что желающие поближе познакомиться с этой платформой могут начать это делать уже сейчас.

Обязательно посмотрите видео от Google, демонстрирующее возможности этой операционки. Как и было обещано, Android обладает всем необходимым для телефонных трубок базовым функционалом вроде записной книжки, возможности отправлять текстовые сообщения и делать звонки. Имеется встроенный браузер, позволяющий одновременно работать с несколькими страницами. Видна тесная интеграция платформы с онлайн-сервисами от Google. Так например, вы можете быстро найти местоположение контакта на карте Google Maps по адресу, который записан для него в списке контактов телефона. Встроенный мессерджер судя по всему работает с сервером gTalk. Дальше смотрите сами, там действительно есть на что посмотреть. Но не забывайте, что это демонстрация предварительной версии платформы.

См. так же:

Комментариев нет

Теги:

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

Заявленные изменения:

  • окно настроек приложения сделано более удобным в использовании;
  • добавлена панель задач для отображения различных TODO в коде. Проверено, что работает в AsctionScript и в MXML файлах;
  • исправлен и усовершенствован механизм работы автозавершения в коде;
  • исправлено большое количество мелких багов.

Более подробную информацию об этом релизе можно получить на этой странице.

Комментариев нет

Теги:
15 октября 2007

FDT 3.0

Увидела свет новая версия любимого многими (за что его любят) инструмента Flash Development Tool 3.0. Сейчас для скачивания доступны две версии плагина: Basic и Professional. Обычная версия отличается от профессиональной отсутствием следующих возможностей:

  1. Quick Views — две панели быстрой навигации по членам класса и иерархии типов;
  2. SWC Browsing and Sourcecode Representation — навигация по содержимому SWC-библиотеки и поддержка видимости классов скомпилированных в библиотеку и их членов в редакторе кода. Библиотека SWC отображается в Flashexplorer как папка;
  3. High-speed Search and Type Hierarchy — поддержка ускоренной работы с элементами кода проекта.

Сейчас ведется работа над версией FDT 3.0 Enterprise, в которой помимо возможностей, имеющихся в версии FDT 3.0 Professional, будут присутствовать:

  1. возможность связи со службой поддержки;
  2. дебаггер;
  3. MXML парсер;
  4. продвинутый рефакторинг.

Честно говоря, поражает уже недетская цена инструмента. Обратите внимание, что цены указаны не в долларах, а в евро:

  • FDT 3.0 Basic: обновление — 99, покупка — 299;
  • FDT 3.0 Professional: обновление — 299, покупка — 399;
  • FDT 3.0 Enterprise: обновление — 499, покупка — 599.

Т.е. хорошую IDE, с отличной поддержкой ActionScript 3 и пока не известно с каким уровнем поддержки MXML-кода, разработчики смогут получить за 850 долларов, что примерно составляет 21 000 рублей. Довольно серьезная сумма.

Как дополнение к посту даю ссылки на Update URL для Eclipse IDE и полный перечень возможностей плагина. Не забывайте о том, что инструмент будет работать 30 дней без серийного номера в пробном режиме.

Комментариев нет

Теги:

Некий Andrew опубликовал в своем блоге полезный плагин для FlashDevelop 3 с вполне не двусмысленным названием FDTracer.
FDTracer — это портированное под использование в среде FlashDevelop 3 знаменитое расширение FlashTracer от Alessandro Crugnola со всеми вытекающими.

Скачать FDTracer можно посетив блог разработчика. Там же вы найдете инструкцию по установке.

Комментариев нет

2 сентября 2007

FlashDevelop 3 beta 3

29 августа вышла третья по счету бета третьей же версии FlashDevelop IDE. В списке нововведений присутствуют:

  • панелька быстрого поиска фразы в текущем документе, совсем как в Firefox, появляющаяся через меню Search → Quick Find..., либо при помощи сочетания клавиш Ctrl+F. ;
  • плагин управления стартовой страницей FlashDevelop. Через настройки этого плагина вы можете отредактировать поведение стартовой страницы, например, сделать так, чтобы она появлялась вместо безымянного пустого документа, когда все другие файлы были вами закрыты, и даже задать свою собственную RSS-ленту;
  • интеграция с Flex-дебаггером для инструкций trace (больше не придется использовать FlashConnect);
  • плашка автозаполнения теперь всегда включена на манер VisualStudio. Однако вы можете отредактировать механизм ее появления, настроив соответствующим образом плагин ASCompletion;
  • проводник типов проекта, может использоваться для поиска файлов в проекте по их названию (Tools → Flash Tools → Project Type Explorer, либо комбинация клавиш Ctrl+J);
  • комманда, вызывающая принудительное обновление кэша дерева классов проекта (Tools → Flash Tools → Rebuild Classpath Cache);
  • возможность создания собственных команд, запускающих проект после его сборки.

Кроме того присутствуют еще небольшие изменения:

  • исправлен текст инсталлятора и выбор компонентов устанавливаемой программы;
  • улучшен встроенный форматировщик текста (настраивается через ASCompletion);
  • некоторые дополнения и исправления UI.

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

А в это же время просачиваются некоторые слухи о том, что же будет из себя представлять FDT 3...

UPDATE: Не знаю, почему об этом не упомянуто в релизе, но сейчас FlashDevelop поддерживает подсветку ActionScript и автокомплит в MXML файлах, автоматически включающиеся, при щелчке мышью в пределах секции <mx:Script></mx:Script>!!!

Один комментарий

Наверняка многие читали статью Андрея Горбатова про разработку Flex приложений во FlashDevelop IDE. Одним из ключевых моментов в этой статье было добавление кнопки сборки проекта с использованием Apache Ant на панель инструментов программы. Но с выходом FlashDevelop 3 Beta метод, описываемый в статье, не будет работать. Это связано с тем, что в новой версии программы была убрана поддержка команды ant из плагина RunCommand. Поэтому некоторые разработчики так и сидят во второй версии FlashDevelop, ну а другие запускают Ant через системную консоль, что не очень удобно.

Оказалось, что решить эту проблему очень просто. Первое, что нужно сделать, это отказаться от использования стандартного способа компилирования AS3 проекта при помощи FDBuild. Кликаем правой клавишей мыши по проекту в панели Projects и выбираем пункт Properties. В появившемся окне на закладке Output ставим галочку на пункте No output, only run pre/post build commands. Теперь нужно указать среде, что она должна делать вместо компилирования. Для этого нужно открыть вкладку Build окна свойств проекта и добавить следующую строчку в секцию Pre-Build Command Line:

ant.bat

Вот и все. Никакой файл ant.bat создавать не нужно. Это просто условная команда. Не забудьте о том, что в корне проекта должен располагаться файл build.xml с целями (targets), которые должен выполнить Ant при сборке проекта. А так же о том, что необходимо добавить директорию с Ant-ом в переменные среды.

Удачных билдов!

5 комментариев