Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > С миру по строчке

Рейтинг: 5.00. Голосов: 17.

Подключение ADOBE ASC 2.0 компилятора к FlashDevelop. Русская инструкция.

Запись от СлаваRa размещена 11.11.2012 в 19:05
Обновил(-а) СлаваRa 13.11.2012 в 03:41

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

И так, если вы до сих пор не знаете, что такое ASC 2.0, советую почитать Introducing ASC 2.0 на bytearray.org, а также http://helpx.adobe.com/flash-builder...atibility.html от Adobe.
Надеюсь, что FlashDevelop у вас установлен.

Начали:
  1. Скачиваем AIR 3.4 SDK with ActionScript Compiler 2.0 и распаковываем архив в FlashDevelop/Tools/
  2. Из FlashDevelop/Tools/flexsdk/ копируем файл flex-sdk-description.xml в FlashDevelop/Tools/air3-4_p3_sdk_asc2_win_100512
  3. Из FlashDevelop/Tools/flexsdk/lib/ копируем fcsh.jar в FlashDevelop/Tools/air3-4_p3_sdk_asc2_win_100512/lib/
  4. Заходим в FlashDevelop/Tools/fdbuild/ и переименовываем fdbuild.exe в fdbuild.exe$
  5. Скачиваем fdbuild.zip, в архиве пропатченный fdbuild.exe, который необходимо скопировать в FlashDevelop/Tools/fdbuild/
  6. Открываем FlashDevelop, создаем новый AS3 проект, и первым делом, идем в Project -> Properties...
  7. Переходим во вкладку SDK и устанавливаем Custom SDK, выбираем FlashDevelop/Tools/air3-4_p3_sdk_asc2_win_100512

От себя:
Я подключил этот компилятор к проекту, над которым работаю довольно долгое время. После чего, пришлось потратить примерно час на отладку кода, чтобы запуститься.
Всем удачи, надеюсь материал будет полезен.

UPD:
Не смотря на то, что в начале я указал ссылку на информацию по этому компилятору, людская лень заставляем меня описать его возможности.
Некоторые их них:
  1. Компиляция нескольких файлов сразу, что ускоряет общее время компиляции
  2. Оптимизации итогового байт-кода(например, путем удаления мертвого кода)
  3. Поддержка алгоритма сжатия LZMA
  4. Добавлены инструменты командной строки fontswf, optimizer, swfdump, swcdepends
  5. Добавлен метатег [Inline]
  6. Поддержка SWC библиотек скомпилированных Alchemy
  7. Этот компилятор более строг к оформлению\написанию кода

UPD2: метатег [Inline]
Для его работоспособности, необходимо указать флаг -inline в опциях компилятора для FD -> Properties -> Compiler Options -> Additional Compiler Options.
Также вы должны не забывать о том, что:
  • Работает только для финализированных, статичных или для функций в области видимости файла или пакета;
  • Функция не должна содержать активаций, try, with и анонимных методов;
  • Кол-во выражений функции не может превышать 50.

Некоторые, наверное, задаются вопросом - "зачем вообще этот [Inline] нужен?"
Этот метатег указывает компилятору, что код(тело метода shuffle в нашем случае) должен быть помещен в место вызова функции, что ускоряет время его выполнения.
Пример использования я покажу на следующем коде:
Код AS3:
package {
	import flash.display.Sprite;
 
	/**
	 * @author SlavaRa
	 */
	public class Main extends Sprite {
 
		//constructor, addedToStageHandler, this.runInlineTest()
 
		private function runInlineTest():void {
			this.testMethod1();
			this.testMethod2();
		}
 
		private function testMethod1():void {
			var array:Array = [1, 5, 9, 7, 5, 6];
			ArrayUtils.shuffle(array);
		}
 
		private function testMethod2():void {
			var array:Array = [10, 55, 88, -2, 36, 99];
			ArrayUtils.shuffle(array);
		}
	}
}
 
/**
 * @author udaaff
 */
class ArrayUtils {
	public static function shuffle(array:Array):void {
		var t:*;
		var r:int;
		var i:int = array.length;
		while (i) 
		{
			r = Math.floor(Math.random() * i--);
			t = array[i];
			array[i] = array[r];
			array[r] = t;
		}
	}
}
Метод shuffler класс ArrayUtils удовлетворяет требованиям компилятора к метатегу [Inline], проверяем...
Ниже приведены скриншоты декомпилированного кода(в академических целях, не более).
  1. "по старинке":
    Код AS3:
    public static function shuffle(array:Array):void
  2. и с использованием данного метатега
    Код AS3:
    [Inline]
    public static function shuffle(array:Array):void
Нажмите на изображение для увеличения
Название: TestInlinedMethod.jpg
Просмотров: 535
Размер:	118.8 Кб
ID:	307
Размещено в FlashDevelop
Комментарии 43 Отправить другу ссылку на эту запись
Всего комментариев 43

Комментарии

Старый 11.11.2012 20:50 TanaTiX вне форума
TanaTiX
 
Аватар для TanaTiX
Цитата:
максимум минимизировать
Фраза порадовала.
Спасибо за инструкцию.
В работе компилятора какие-либо баги/особенности/нюансы замечены?
Старый 11.11.2012 21:08 СлаваRa вне форума
СлаваRa
 
Аватар для СлаваRa
Самое главное прочитать спецификацию компилятора, это очень важно.

Да, нюансы замечены:
Код:
Warning: 'static-link-runtime-shared-libraries' is not fully supported.
Error на конструкции типа
Код AS3:
do {
  //.. some code
}while(someVar = someValue)
один из базовых классов теперь выглядит так
Код AS3:
import slavara.as3.core.events.data.DataBaseEvent;
 
	/**
	 * @author SlavaRa
	 */
	public class WorldEvent extends slavara.as3.core.events.data.DataBaseEvent {
запись плана
Код AS3:
public class WorldEvent extends DataBaseEvent
выдавала Error, мне некогда было разбираться почему, я просто быстро нашел решение.

так же были проблемы с классами сгенерированными Code Orchestra, а именно с метатегом Event[], потому что у них внутри скобок использовались константы.

больше у меня проблем не было, но я весь код, кроме базовых классов, заранее готовил под него
Обновил(-а) СлаваRa 12.11.2012 в 02:59
Старый 11.11.2012 22:09 КорДум вне форума
КорДум
 
Аватар для КорДум
За inline отдельное спасибо =)
Старый 11.11.2012 23:15 garymar вне форума
garymar
Что этот компилятор дает,зачем он вообще нужен? )
Старый 11.11.2012 23:48 Dukobpa3 вне форума
Dukobpa3
 
Аватар для Dukobpa3
В чем бонус?
Старый 11.11.2012 23:50 Dukobpa3 вне форума
Dukobpa3
 
Аватар для Dukobpa3
Ну и на всяк случай - я никогда не ставлю сдк вместе с девелопом, только отдельно качаю в отдельную папочку - в таком случае надо это всё не в тулс кидать а в папку сдк?
Старый 12.11.2012 00:27 in4core вне форума
in4core
 
Аватар для in4core
Цитата:
Что этот компилятор дает,зачем он вообще нужен? )
Поддерживаю. В чем кайф ? Пока вижу только минуса
Код:
extends slavara.as3.core.events.data.DataBaseEvent
Старый 12.11.2012 01:08 СлаваRa вне форума
СлаваRa
 
Аватар для СлаваRa
Дюк, я тоже раньше складывал все в папку sdk, но в какой-то момент она у меня стала выглядеть как свалка, потому что пришлось создавать папки под языки, мне надоело, и теперь в каждом редакторе свои tools где лежат sdk. (я не пользуюсь "комбайнами")
Но согласись, это же не принципиально.
Старый 12.11.2012 01:16 КорДум вне форума
КорДум
 
Аватар для КорДум
http://www.bytearray.org/?p=4789
Тут написаны плюсы.
Старый 12.11.2012 02:53 garymar вне форума
garymar
Нипанятна
Старый 12.11.2012 02:58 СлаваRa вне форума
СлаваRa
 
Аватар для СлаваRa
Я же специально для вас обновил пост, и написал некоторые преимущества ASC 2.0, если вам даже так не понятно, то я пасс.
Старый 12.11.2012 04:03 in4core вне форума
in4core
 
Аватар для in4core
Все понятно, чувак тупит наверно
Старый 12.11.2012 13:00 carrotoff вне форума
carrotoff
 
Аватар для carrotoff
Надо попробовать
Старый 12.11.2012 22:32 iNils вне форума
iNils
 
Аватар для iNils
Цитата:
Не смотря на то, что в начале я указал ссылку на информацию по этому компилятору, людская лень заставляем меня описать его возможности.
Некоторые их них:
Это не лень. Это элементарное желание получить информацию в одном месте, а не бегать туда сюда, к тому же, читать это на английском.
Цитата:
сейчас редактировать пост не буду, а то опять пропадет
Внес в список авторов блогов - одобрения модераторов для публикации больше не требуется, так что, все правки сразу отражаются.
Обновил(-а) iNils 13.11.2012 в 03:44
Старый 12.11.2012 22:43 СлаваRa вне форума
СлаваRa
 
Аватар для СлаваRa
ок, iNils, спасибо, завтра дополню с работы)
Старый 14.11.2012 02:09 Sintesis вне форума
Sintesis
 
Аватар для Sintesis
А в компиляторе, который идёт с FlexSDK нет inline? Тогда у этого преимущества большие, он будет заменяет вызов небольших функции, кодом самой функции, ещё плюс такие жёсткие требования к коду - готовый продукт будет работать быстрее. Тесты какие-нибудь провести-бы...
Обновил(-а) Sintesis 14.11.2012 в 03:48
Старый 14.11.2012 03:30 СлаваRa вне форума
СлаваRa
 
Аватар для СлаваRa
Нет, во FlexSDK такого функционала нет.
Материал о работе с этим компилятором в процессе написания, я думаю что на след. неделе выложу.
Старый 14.11.2012 12:44 alatar вне форума
alatar
 
Аватар для alatar
Во FlexSDK этот функционал появится когда допилят Falcon.
Старый 14.11.2012 15:06 XoJlToH вне форума
XoJlToH
 
Аватар для XoJlToH
Есть проект с прелоудером из флэшдевелопа. На инициализации основного класса в конструктор передаются параметры. Если собираю через флексдк - все ок, ASC судя по всему эти параметры не передает и выкидавет ошибку. Как быть?
Код AS3:
var mainClass:Class = getDefinitionByName("someClass") as Class;
			addChild(new mainClass(param1, param2, param3, param4, param5,param6,param7,param8,param9) as DisplayObject);
someClass находится в src
конструктор
Код AS3:
public function someClass($param1:String, $param2:String, $param3:Boolean, $param4:Boolean, $param5:String, $param6:String, $param7:String = null, $param8:String = null, $param9:Boolean = false):void
Ошибка
Код AS3:
[Fault] exception, information=ArgumentError: Error #1063: Несоответствие количества аргументов в someClass(). Ожидалось 6, получено 0.
Старый 16.11.2013 15:03 Akopalipsis вне форума
Akopalipsis
Спасибо Большое за статью, не где не мог найти подобного.
Старый 15.12.2013 16:52 Akopalipsis вне форума
Akopalipsis
В последней версии FD при установке ставил галочки на все SDK и на ASC 2.0 и если я правильно понимаю,
то скачивать и заменять файлы уже не нужно, но как тогда подключить ASC 2.0?
И ещё у меня нет папки air3-4_p3_sdk_asc2_win_100512 , да и air вообще. Подумал, что эта папка в скаченном SDK, скачал от сюда http://www.adobe.com/devnet/air/air-sdk-download.html и и такой папки не оказалось.
Обновил(-а) Akopalipsis 15.12.2013 в 17:39
Старый 15.12.2013 18:04 MikroAcse вне форума
MikroAcse
 
Аватар для MikroAcse
Akopalipsis, вы некромант? Зачем поднимаете мертвые темы?
В FD 4.5 уже скачивается AIR SDK с ASC 2.0
Старый 15.12.2013 18:34 Akopalipsis вне форума
Akopalipsis
Цитата:
Зачем поднимаете мертвые темы?
За тем, что это не тема. И я же сказал, что при установке FD указал установить этот компилятор.
Но я не знаю, как его теперь включить. Если кто то знает, то подскажите. Возможно он и компилирует по умолчанию, но я пробовал ==Sothink__ разобрать и показывает, что инлайна нет...
Старый 15.12.2013 18:45 СлаваRa вне форума
СлаваRa
 
Аватар для СлаваRa

Вот в 4.5+ ASC2.0, который официально AIR SDK, который качает FD при установке.
Старый 15.12.2013 19:33 Akopalipsis вне форума
Akopalipsis
СлаваRa Спасибо! И у меня ещё один глупый вопрос - я всегда думал, что AIR это не для браузера, а для приложений, которые нужно устанавливать в систему. А вот про Inline я подумал, что он для браузера. И теперь я не понимаю, если я в качестве компилятора укажу AIR SDK, то под браузерные приложения компилировать смогу? Или я не правильно понял и Inline только для AIR приложений?
Старый 15.12.2013 20:41 MikroAcse вне форума
MikroAcse
 
Аватар для MikroAcse
Akopalipsis, инлайн - это функция компилятора, которая просто встраивает тело функции в место ее вызова.
То, что компилятор называется AIR SDK, не значит, что будет компилироваться только под AIR.
В общем, ответ нет, работать будет везде.
Старый 15.12.2013 20:43 СлаваRa вне форума
СлаваRa
 
Аватар для СлаваRa
Это компилятор(AIR SDK), а не платформа рантайма.
Так же можно поставить последний Apache flex sdk, который тоже поддерживает [Inline]. FlashDevelop 4.5.2 не умеет ставить его сам.
Старый 15.12.2013 21:13 MikroAcse вне форума
MikroAcse
 
Аватар для MikroAcse
Цитата:
Так же можно поставить последний Apache flex sdk
А каковы его отличия и особенности, если сравнивать с ASC 2.0?
Старый 15.12.2013 21:17 Akopalipsis вне форума
Akopalipsis
Цитата:
FlashDevelop 4.5.2 не умеет ставить его сам.
То есть, его мало скачать и указать путь в настройках?
И что меня смутило в AIR SDK как Вы показали на скрине, так это отказ разкомпилировать swf. И есть сомнения что может что то не так.
Старый 15.12.2013 21:27 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Цитата:
Так же можно поставить последний Apache flex sdk, который тоже поддерживает [Inline].
Выходит, ASC2 это форк от flex sdk? Что сейчас использовать моднее-круче-современней?
Старый 15.12.2013 21:52 MikroAcse вне форума
MikroAcse
 
Аватар для MikroAcse
Цитата:
То есть, его мало скачать и указать путь в настройках?
Нет. Этого достаточно. Читайте внимательнее.

Цитата:
отказ разкомпилировать swf
Что?
Старый 15.12.2013 22:05 Akopalipsis вне форума
Akopalipsis
Цитата:
Нет. Этого достаточно. Читайте внимательнее.
Скачал по этой ссылке - http://apache-mirror.rbc.ru/pub/apac...4.11.0-src.zip
как и с обычной, разархивировал в папку, в FD указал путь и ещё как показал СлаваRa на скриншоте, выставил в настройках и ещё плеер 11,9 версию выставил. Ошибка при попытке, что то скомпилировать - Exception: Could not locate lib\fcsh.jar in Flex SDK.
Цитата:
Что?
Ещё до вопроса, я скачал .... то что выше написал и попробовал раскомпилировать swf, получилось, но инлайна там не было. После совета выставить AIR SDK, попробовал снова, но на отрез отказывается, пишет ошибка и всё. Вот я и не успокаиваюсь, так как скорее всего, что то не правильно компилирую...
Старый 15.12.2013 22:18 MikroAcse вне форума
MikroAcse
 
Аватар для MikroAcse
Цитата:
Exception: Could not locate lib\fcsh.jar in Flex SDK.
Так статью прочитайте, а?
Старый 15.12.2013 22:36 Akopalipsis вне форума
Akopalipsis
MikroAcse Вы можете думать, что я глупый или тороплюсь, но я прочел ЭТУ статью ещё раз и не понял о чём Вы...
Старый 15.12.2013 22:42 Akopalipsis вне форума
Akopalipsis
Если Вы о -
Цитата:
Из FlashDevelop/Tools/flexsdk/lib/ копируем fcsh.jar в FlashDevelop/Tools/air3-4_p3_sdk_asc2_win_100512/lib/
то у меня в апаче нет папки lib...
Старый 15.12.2013 23:08 MikroAcse вне форума
MikroAcse
 
Аватар для MikroAcse
Цитата:
Вы можете думать, что я глупый или тороплюсь
Я так не думаю. Сам таким был
Старый 15.12.2013 23:28 Akopalipsis вне форума
Akopalipsis
Вот по апачу -



Что не правильно? Папки lib нет, я нашёл её в несколько влажений и добавил туда файл fcsh.jar, но это не помогло. Или ещё нужно и fdbuild.exe в fdbuild.exe$ переименовывать? Но я пока так не сделал, так как возможно уже не актуально. А вот что выдает, когда я точно так же, как на скринах выше установил AIR SDK -
Старый 16.12.2013 09:23 СлаваRa вне форума
СлаваRa
 
Аватар для СлаваRa
@Тем, ASC 2.0, теперь официально в AIR SDK, этот компилятор пишет Adobe, он не поддерживает MXML.
Старый flex sdk ушел в open source его пилят Apache он поддерживает MXML.
Эта статья была написана на тот момент когда FlashDevelop не умел работать с ASC 2.0, в данный момент она не актуальна
@Akopalipsis, для подключения apache flex sdk добавьте его в
Старый 16.12.2013 11:29 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
То есть, если не использовать флекс – лучшей опцией является ASC2 ?
Старый 16.12.2013 11:58 СлаваRa вне форума
СлаваRa
 
Аватар для СлаваRa
Я его юзаю на своих проектах, не жалуюсь.
Скрин выше с рабочего редактора, как видишь там есть все.
Старый 16.12.2013 13:45 Akopalipsis вне форума
Akopalipsis
СлаваRa я так и сделал, а ещё сделал, как на предыдущем Вашем скрине, но ошибка - Exception: Could not locate lib\fcsh.jar in Flex SDK. А со скриншётами такая беда, из-за того, что я не могу на прямую вставить в блог, а из альбома они почему то маленькие.
Старый 16.12.2013 14:49 СлаваRa вне форума
СлаваRa
 
Аватар для СлаваRa
версия FD какая?
Старый 16.12.2013 16:22 Akopalipsis вне форума
Akopalipsis
Цитата:
версия FD какая?
Самая последняя.
 

 


Часовой пояс GMT +4, время: 22:34.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.