fdasc

Прочитав недавно статью «Где, как и зачем использовать inline в as3?» от TheRabbit, решил попробовать [Inline].

Для того, чтобы собрать .swf или AIR проект через «FlashDevelop» использовав «новый» компилятор ASC2.0, нужно:

1) скачать последний AIR SDK отсюда: http://labs.adobe.com/downloads/air.html;

2) распаковать его в папку «C:\Program Files (x86)\FlashDevelop\Tools\ascsdk» (Win) (раньше я всегда распаковывал в папку «C:\Program Files (x86)\FlashDevelop\Tools\flexsdk», но в этом случае не получится скомпилировать простой .swf новым компилятором, «FlashDevelop» в этом случае собирает через флексовый компилятор (mxmlc));

3) создаем проект и идем в «Project > Properties > Compiler Options > Additional Compiler Options» и добавляем туда строчку: -inline || альтернативный вариант «Project > Properties > Compiler Options > Inline Functions > True»;

4) настраиваем SDK — «Project > Properties > SDK» и здесь есть два варианта[*]:

а) выбрать в выпадающем меню «Installed SDK(s)» > AIR 4.0.0; (это тот AIR SDK, который мы распаковали в папку «C:\Program Files (x86)\FlashDevelop\Tools\ascsdk» в пункте 2) ;

б) выбрать в выпадающем меню «Installed SDK(s)» > Flex SDK 4.6.0, AIR 4.0.0 + ниже в «Custom SDK» прописать путь «C:\Program Files (x86)\FlashDevelop\Tools\ascsdk» ;

5) теперь можно “инлайнить” используя мета-тэг [Inline]. Сборка проекта при таких настройках будет происходить с использование AIR компилятора;

[*] разницы между этими двумя вариантами я не увидел, если кто-то знает — отписывайтесь в комментариях.

Для теста можно запустить такой код (взят отсюда):

package
{
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.utils.getTimer;

    public class inlinetutorial extends Sprite
    {
        public function inlinetutorial()
        {
            var tf : TextField = new TextField();
            addChild(tf);

            var timer : int = getTimer();
            for ( var i : int = 0; i < 5000000; i ++ ) {
                var res : Number = formula1(80,22,22,77);
            }
            tf.text = String(getTimer() - timer + " ms");
        }

        [Inline]
        public static function formula1(x1:Number,x2:Number,y1:Number,y2:Number):Number{
            var dx : Number = x2 - x1;
            var dy : Number = y2 - y1;
            return dx*dx + dy*dy;
        }
    }
}

Спасибо!