компиляция скрипта действий из командной строки с использованием MXMLC - PullRequest
18 голосов
/ 20 мая 2009

У меня есть крошечный ActionScript-проект, состоящий из двух файлов, назовите их foo.as и bar.as. По причинам, в которые я не буду вдаваться, я действительно очень хочу собрать .SWF из командной строки, не настраивая какой-либо формальный проект. Каждый компилятор, который я когда-либо использовал, позволяет вам делать это, но я не могу понять, как заставить MXMLC скомпилировать эти два файла и связать их в SWF-файл.

Наивно, я стараюсь

MXMLC foo.as bar.as

но мне сообщили, что разрешен только один исходный файл.

Хорошо, предположим, что я скомпилировал эти два файла отдельно, как бы я связал их вместе, чтобы получить окончательный SWF?

ПРИМЕЧАНИЕ. Единственной причиной, по которой у меня есть два файла вместо одного, является требование наличия только одного класса на файл. Я попытался поместить оба класса в один файл и создать один из классов private или internal, но ни одна из этих идей не сработала. Я был бы в восторге, узнав, что я могу поместить более одного класса в файл (только один из которых является общедоступным).

Ответы [ 5 ]

23 голосов
/ 21 мая 2009

Это вопрос из двух частей, поэтому я отвечу на оба отдельно.

Компиляция двух файлов классов в один SWF

MXMLC автоматически скомпилирует все классы, которые он найдет, с точки входа, которую вы ему дадите (ваш основной класс). Он находит классы из ваших операторов импорта и полные определения пути к классам.

Вот действительно хорошее руководство по использованию командной строки MXMLC для компиляции ваших проектов AS3. Статья немного устарела, но информация все еще хороша. Он подробно рассказывает о том, что вам нужно знать при использовании компилятора командной строки, включая параметры MXMLC, написание BAT-скриптов и немного об AS3, который вы, вероятно, можете пропустить, если знаете, что делаете.

Наличие более одного класса в файле

AS3 позволяет вам иметь один класс на файл плюс столько «вспомогательных» классов, сколько вам нужно. Он не поддерживает защищенные и частные классы, как Java. Вспомогательные классы видны только в файле, в котором они определены.

Вспомогательные классы находятся за пределами объявления пакета (что немного странно для меня). Вот пример:

package com.mynamespace
{
     public class Foo 
     {
          private var _fooHelper:FooHelper = new FooHelper();
     }
}

// helper class imports also go outside the package.
import com.example.xml.SaxHandler;
class FooHelper
{
     private var bar:Number = Math.random();
}
2 голосов
/ 20 мая 2009

Как говорит Бегемот, компилятор автоматически скомпилирует в SWF все классы, используемые в вашем коде, по умолчанию он рекурсивный.

Вы также можете прочитать все опции , которые есть у компилятора MXMLC .

2 голосов
/ 20 мая 2009

Если основной файл / класс нуждается / использует класс другого файла, другой файл также будет скомпилирован в swf.

0 голосов
/ 13 марта 2014

Если вы используете grunt в качестве менеджера задач (для js), вы можете использовать этот плагин:

https://github.com/JamesMGreene/grunt-mxmlc

Вы устанавливаете параметры конфигурации и запускаете его из командной строки:

grunt.initConfig({
  mxmlc: {
    options: {
      // Task-specific options go here.
    },
    your_target: {
      // Target-specific file lists and/or options go here.
    },
  },
})
0 голосов
/ 05 июля 2009

Если вы заинтересованы в автоматизации этого процесса, вы также можете использовать Project Sprouts , который включает в себя немного больше, чем вы просите - но дает вам возможность запускать сборки и тестировать работает от терминала.

...