Кто-то скажет, что это уже было, кому-то это покажется извращением, но кому-то это может пригодиться:
Хорошо было бы писать код во Flex Builder, компилировать его во Flash IDE и видеть результат в браузере, и желательно все по одном клику.
Но как подружить Flex Builder 3 с Flash CS3 IDE и браузером? Понятное дело — с помощью всемогущего Apache Ant, который может выполнять любые операции из-под Eclipse / FlexBuilder. Но всемогущества Ant, однако, не хватит, чтобы заставить Flash IDE скомпилировать FLA-файл. Зато на этот случай у нас есть JSFL — язык, на котором мы можем многое приказать самой Flash IDE. Но я не могу запустить JSFL-скрипт прямо из Ant. Зато я могу запустить его из bat-файла, а тот могу запустить из Ant. Вот и готово решение:
Flex Builder > Ant > Batch > JSFL > Flash IDE > Браузер > снова Flex Builder — рабочий цикл.
Создадим Ant-файл build.xml с инструкциями по сборке:
<!-- build.xml: --> <project name="Build Project in Flash IDE" default="init" basedir="." > <property name="file.source.fla" location="D:\projects\project\sources\source.fla"/> <property name="file.build.bat" location="D:\projects\project\sources\sources\build.bat"/> <property name="file.flash.exe" location="C:\Program Files\Adobe\Adobe Flash CS3\Flash.exe"/> <property name="file.browser.exe" location="D:\Tools\IE\6\iexplore.exe"/> <property name="url" value="http://localhost/?v=0.0.1."/> <target name="init" depends="increment, build, run"/> <target name="increment"> <buildnumber file="build.number"/> </target> <target name="build"> <exec executable="${file.build.bat}" dir="."> </exec> </target> <target name="run"> <exec executable="C:\WINDOWS\system32\tskill.exe"> <arg line="iexplore /a"/> </exec> <exec executable="${file.browser.exe}"> <arg line="${url}${build.number}"/> </exec> </target> </project>
Как легко заметить, Ant выполняет файл build.bat, у которого внутри только одна команда:
REM build.bat: build.jsfl
А файл build.jsfl в свою очередь заставляет Flash IDE опубликовать открытый в ней FLA-файл вот этим кодом (точно так же делает FlashDevelop):
// build.jsfl: var doc = fl.getDocumentDOM(); if (doc == null) { fl.trace("No documents open"); } else { doc.save(); doc.publish(); }
Вот и все. Назначив во Flex Builder шорткат для команды "Ant Build", вы получите компиляцию во Flash IDE и просмотр в браузере "одним кликом" — сохраняя при этом все преимущества написания кода во Flex Builder 3. А браузер будет переоткрываться каждый автоматически благодаря вызову в Ant-файле команды tskill, каждый раз убивающей процесс браузера по его имени (как научил нас Рома Шупер).
Эта, может быть, сложная для кого-то на первый взгляд конструкция решает множество задач. Достаточно один раз ее настроить за 15 минут и затем пользоваться в свое удовольствие.
Чего я вам и желаю :-)
Учтите: я не разбираюсь в Apache Ant, но все равно им пользуюсь. Парадокс!
пользуйтесь FDT!
Вот только не надо рассказывать что для связки FlexBuilder + FLA (причем компиляция все равно в Flash IDE), FlexBuilder лучший редактор кода :) Flash Develop намного разумнее :)
Nicolas Prof:
shaman4d:
Ага, вот именно. Переплачивать. ФДТ крут, но, на мой взгляд, того, что за него требуют, не стоит. Грызите меня, любители ФДТ :-)
Насколько я понимаю, в этом способе FB не дает автоподсказок, навигации по ресурсам и т.п.?
Не совсем понимаю, чем хуже писать AS 3.0 проект в билдере, подключая ресурсы из .swc-файлов, скомпилированных с помощью kit'a для Flash IDE.
- у меня появился лицензионный FlexBuilder и я от этого реально тащусь.
- FlexBuilder удобен: ставишь и работаешь.
ФДТ, как AS3-редактор, удобнее, полнее и мощнее Флекс Билдера.
Хотя, не могу не признать, в редакторе ФБ есть некоторые забавные фишки, которых ФДТ лишён. Одна из таких фишек - список имён событий для после набора .addEventListener(.. , очень жалко, что в ФДТ до этого не дошли.
Собственно, я не согласен только с утверждением, что ФБ - самый удобный. Самый удобный - ФДТ, просто дорогой.
ФБ и ФДТ не конкуренты. Я не думаю, что стал бы писать флексовые классы в ФДТ, и уж тем более классы для флэшового проекта в ФБ.
К счастью, и тот и другой мне проставила работа, нет необходимости выбирать : Р
Читал с нарастающим интересом до "Понятное дело — с помощью всемогущего Apache Ant". Это облом :о(( Когда был маленький очень любил писать батники. Щаз люблю кнопки, все что можно сделать мышкой, желательно ей и делать, поэтому видал я этого муравья в белых тапках :о(
Даешь муравью - муравейник!
Нажмём "Создать Ant-файл" - введем "build.xml" Нажмем "Добавить проперть" Нажмем "Добавить проперть" Нажмем "Добавить проперть" Нажмем "Добавить таргет" Нажмем "Добавить таргет"
Когда программист приходит на новую работу, он переустанавливает всё. Ибо зарплата капает, а процесс не напряжен. Потом ещё месяц-другой можно будет входить в курс дела и т.п. Для многих такие вещи ("ставишь и работаешь") не приятны, ибо разрушают их бизнес-модель.
Программисты будущего, придя на новую работу, будут переустанавливать все, увольнят директора и заново прокладывать сеть. Оно и понятно - свои-то грабли не так больно бьют :-)
Когда был маленький очень любил писать батники. Щаз люблю кнопки.
Так, але, батники-фигатники, чем Flash Component Kit или как он там хуже этого способа? :)
Apache Ant рулит =)
Макс, причем здесь Kit =)?
Flex-овый автокомплит - полное дерьмо. Пишу резко, потому что вот прямо сейчас взбесило. До FD ему еще курить и курить взатяг.
Мужики посоветуйте на русском инфу или ресурс какой нибудь??? Буду сверх благодарен если скините на мыло bigshot_kr@mail.ru...:)
Супер решение по поводу использования всемогущего Antа для Flash CS3, но в процессе тестирования возникла небольшая проблемка, возможно для опытных девелоперов это не проблема, для всех остальных:
Если процесс компиляции ролика во flash IDE будет занимать какое то время, то броузер откроется не отобразив заветную swf-ку, потому как файла еще нет.
На помощь приходит волшебный элемент waitfor. Небольшой update для кода Роста:
К свойствам: <property name="file.source.swf" location="D:\projects\project\sources\source.swf"/>
<property name="file.source.swf" location="D:\projects\project\sources\source.swf"/>
В таргет run: <waitfor maxwait="5" maxwaitunit="second" checkevery="500"> <available file="file.source.swf"/> </waitfor>
<waitfor maxwait="5" maxwaitunit="second" checkevery="500"> <available file="file.source.swf"/> </waitfor>
Теперь броузер запустится, только тогда когда появится необходимая swfка. Ждать ant будет 5 секунд, а проверять есть ли она или нет, каждые пол секунды.
Подробнее тут: http://ant.apache.org/manual/CoreTasks/waitfor.html