redtamarin
Запись от alatar размещена 20.07.2011 в 23:36
Что это за зверь?
Проект основанный на Tamarin позволяющий запускать AS3 код из командной строки. Но так как Tamarin содержит только базовые классы (Object, Array и т.д.) redtamarin добавляет нативный функционал, вроде определения под какой системой запущено приложение, запись/чтение файлов, работа с сокетами и т.д.
Подробнее с проектом можно ознакомиться на офсайте. Здесь я опишу компиляцию и установку инструментария под Windows (Ибо как раз под виндой не все гладко. Те кто используют Linux могут пропустить раздел о установке и почитать о нем на офсайте) и приведу вольный перевод Getting Started из вики проекта.
Установка под Windows
Сборка интрументария
Для установки понадобятся ant, java и svn клиент, например TortoiseSVN. Если у вас их нет, придется скачать и установить.
Далее, качаем оболочку (по-сути это виртуальная машина для выполнения *.as или бинарных файлов) redtamarin_{version}_WIN.zip.
В принципе,
Распакуйте содержимое архива, создайте в этой папке файл hello.as со следующим содержимым:
Запустите консоль и введите:
Код:
redshell.exe hello.as
Для полноценной работы необходимо скачать исходники инструментария. Сделать это можно с помощью svn, в консоли:
Код:
svn co http://redtamarin.googlecode.com/svn/tools/trunk redtamarin-tools
Получится такая структура папок:
Код:
redtamarin-tools |_ build | |_ ant | |_ red | |_ nix | |_ osx | |_ win | |_ src |_ ...
После чего, запускаем консоль, переходим в папку redtamarin-tools и вводим:
Код:
ant
Код:
bin |_ abcdump.exe <- Показывает содержимое abc или swf файла |_ asc.exe <- Исполняемая обертка для asc.jar |_ asc.ajr |_ builtin.abc |_ createprojector.exe <- Утилита для создания projector |_ EclipseExternalTools.exe <- Утилита для создания Eclipse External Tools для redtmarin |_ redshell.exe <- redshell release |_ redshell_d.exe <- redshell debug |_ swfmake.exe <- Утилита для вшивания ABC файлов в swf |_ toplevel.abc
Подключение к Flash Builder
С подключением не все так гладко, как было до этого (если у вас до этого этапа все было гладко ).
Авторы redtamarin предлагают воспользоваться любезно предоставленным EclipseExternalTools.exe для подключения инструментария. Но на практике, штука это довольно глючная (под виндой).
Запустите консоль и введите:
Код:
EclipseExternalTools.exe путь/к/workspace/вашего/FlashBulder
Для тех, кто никогда не использовал чистый Eclipse, workspace это папка в которой по-умолчанию создаются ваши проекты. Что-то типа c:/Documents and Settings/username/Adobe Flash Builder 4 под XP или c:/User/username/Adobe Flash Builder 4 в семерке.
Или можете просто скопировать EclipseExternalTools.exe в workspace и набрать:
Код:
EclipseExternalTools.exe .
Необходимо создать следующие конфигурации:
Код:
Name: ASC_compile Location: ${project_loc}/bin/asc.exe Working Derictory: ${project_loc}/bin/ Arguments: -AS3 -strict -import builtin.abc -import toplevel.abc ${resource_loc}
Код:
Name: dump_api Location: ${project_loc}/bin/abcdump.exe Working Derictory: ${project_loc}/src/ Arguments: -api ${resource_loc}
Код:
Name: dump_infos Location: ${project_loc}/bin/abcdump.exe Working Derictory: ${project_loc}/src/ Arguments: -i ${resource_loc}
Код:
Name: extract_abc Location: ${project_loc}/bin/abcdump.exe Working Derictory: ${project_loc}/src/ Arguments: -a ${resource_loc}
Код:
Name: make_projector Location: ${project_loc}/bin/createprojector.exe Working Derictory: ${project_loc}/src/ Arguments: -exe ../bin/redshell.exe ${resource_loc}
Код:
Name: redshell_debug Location: ${project_loc}/bin/redshell_d.exe Working Derictory: ${project_loc}/src/ Arguments: ${resource_loc}
Код:
Name: redshell_run Location: ${project_loc}/bin/redshell.exe Working Derictory: ${project_loc}/src/ Arguments: ${resource_loc}
Создание нового проекта и компиляция
Тут все просто. Создаем в билдере ActionScript проект. Удаляем весь автосгенерированный код (оставляем только пустой as файл). Копируем в него папку bin из инструментария (прямо в папку проекта, не в src) качаем swc (redtamarin_{version}_SWC.zip) с компонентами (нам ведь нужен автокомплит?) и кладем ее в папку libs (например) в проекте.
Далее открываем свойства проекта, переходим к ActionScript Build Path -> Library Path и убираем оттуда всё. После чего подключаем нашу папку libs. Переходим к Builder и снимаем чекбокс рядом с Flex. Билдер ругнется, но нам, как говорится, пофиг, поэтому подтверждаем наше решение.
Всё. Инструментарий к бою готов.
Первая кровь
Поскольку redtamarin предназначен для разработки консольных приложений, неплохо бы эту консоль включить в билдере Window -> Console.
В нашем as файле пишем следующее:
Убеждаемся, что в Package Explorer выбран наш as файл и нажимаем ASC_compile
Полдела сделано, в папке src появился файл с расширением abc, теперь его можно запустить. Выбираем файл abc и нажимаем redshell_run и в консоли видим
Код:
username: ваше имя
package test { import avmplus.System; public class Robot { private var _name:String; private var _username:String; public function Robot(name:String) { _name = name; } public function askUserName():void { trace("What is you name?"); var answer:String = System.readLine(); if (answer != "") { _username = answer; } } public function sayHello():void { trace("Hello " + _username + "."); } public function sayMyName():void { trace("I am " + _name + "."); } } //entry point //программа начнет работать отсюда var rob:Robot = new Robot("Rob"); rob.askUserName(); rob.sayHello(); rob.sayMyName(); }
1. Точка входа нашей программы находится вне класса.
2. Имя файла может не совпадать с именем класса и в одном файле может быть сколько угодно классов и они все будут доступны из-вне.
3. Пакет может быть любым и можно не дублировать в виде системы каталогов.
4. trace() выводит всегда, а не только в дебаг версии.
5. Консоль в FlashBuilder (точнее в Eclipse) не поддерживает интерактивный режим, поэтому лучше запускать ваше приложение из полноценной консоли.
Можно вынести класс Robot в отдельный файл, но тогда вы должны будете прописать для него include в дополнение к импорту.
Более сложные примеры можно увидеть на офсайте.
Всего комментариев 30
Комментарии
21.07.2011 11:35 | |
21.07.2011 11:39 | |
Да, забыл дописать. System.readLine(); блокирует программу и ждет ввода пользователя.
|
24.07.2011 01:19 | |
тупой вопрос, но все же: выводится ли графика, если да, то куда?
|
24.07.2011 02:05 | |
Только псевдографика
Ну, можно в текстовый файл вывести или в другое консольное приложение. |
24.07.2011 02:17 | |
а что собственно собой представляет эта "псевдографика"? непросчитанный дисплэйлист?
|
24.07.2011 03:05 | |
12.08.2011 11:13 | |
а смысл от подобной канители?
|
12.08.2011 19:29 | |
Смысл — создание консольных приложений.
|
12.08.2011 21:25 | |
кстати да,обьясните,зачем СЕЙЧАС вообще нужны консольные приложения?
|
13.08.2011 00:42 | |
А что не так с СЕЙЧАС, что отпала необходимость в консольных приложениях?
|
13.08.2011 00:47 | |
Графический интерфейс далеко не всегда необходим.
|
15.08.2011 15:20 | |
Но мой второй вопрос все еще корректен, не правда ли?
|
15.08.2011 16:08 | |
Который из них?
|
15.08.2011 16:40 | |
Насчет производительности? JIT используется тот же, что и в плеер. Тестов на производительность не делал.
|
10.01.2013 16:40 | |
бывают же извращения)
вот положа руку на сердце, предложите пример практического применения данной технологии |
10.01.2013 16:45 | |
Какой пример вам необходим? NodeJS тоже извращение? Серверные скриптовые языки тоже?
|
10.01.2013 21:30 | |
С неторопливостью можно и поспорить. Большинство скриптовых серверных языков либо слабо, либо динамически типизированы (в частности, все вами перечисленные). Python старше JavaScript, Ruby того же года, что и JS. В чем измеряется "годность" языков?
Преимущество решений типа NodeJS (кстати, есть и NodeAS) в возможности использовать один язык для клиентской и серверной частей, что потенциально удешевляет разработку или, как минимум, прототипирование. |
11.01.2013 01:07 | |
за NodeAs - респект и уважуха)
|
12.01.2013 14:44 | |
По последним данным C++ вообще никто не знает (даже те, кто разрабатывал компиляторы под него). Видимо тут дело в языке
Оно конечно хорошо писать писать на том же языке, что и клиент, только вот от изучения API серверной части и вообще теории о том как работает сервер это не спасёт. Наворачивать _неклассическую_ технологию только для того, чтобы использовать тот же синтаксис? Это только усложнит изучение API - для неклассической технологии меньше материала в сети и готовых решений часто встречающихся проблем. Плюс не надо забывать, что будут баги, т.е. то что работало на нашем любимом AS3 во флеше - на сервере может не прокатить. Это просто контрпример. Это не значит что использование одного языка вообще не имеет смысла. Я пару тулз на Air написал и это было проще, чем на C#, особенно при работе с графикой (ну с асинхронностью приходилось возиться там, где в каком-нть PHP можно было просто подряд 2 строчки). Но в то же время редактор локализации оказалось раз в 10 проще написать на C#. Но это десктопные тулзы, а чтобы писать на сервере после клиента придется изучать больше новых апи. |
|
Обновил(-а) expl 12.01.2013 в 15:02
|
14.01.2013 13:02 | |
Цитата:
Но вряд ли кто то эти будет заниматься
|
Последние записи от alatar
- Трансформации вокруг произвольной точки (05.02.2015)
- Декомпозиция матрицы. (25.12.2014)
- Баги TextField в iOS (29.07.2013)
- [Spark] Стрелочный индикатор. (06.12.2012)
- RSLs Monkey Patching (23.01.2012)