Компиляция ActionScript из командной строки с использованием MXMLC
У меня есть маленький проект "файл", состоящий из двух файлов, назовите их foo.as и bar.as. По причинам, в которые я не буду вдаваться, я действительно очень хочу построить .SWF из командной строки, не создавая формальный проект любого рода. Каждый компилятор, который я когда-либо использовал, позволяет вам это делать, но для жизни я не могу понять, как принудить MXMLC к компиляции этих двух файлов и привязать их к SWF.
Наивно, я пытаюсь
MXMLC foo.as bar.as
но мне сообщили, что разрешен только один исходный файл.
Хорошо, предположим, что я скомпилировал эти два файла отдельно, как бы связать их вместе, чтобы получить окончательный SWF?
ПРИМЕЧАНИЕ. Единственная причина, по которой у меня есть два файла вместо одного, - это требование только одного класса для каждого файла. Я попытался поместить оба класса в один файл и сделать один из классов private
или internal
, но ни одна из этих идей не работала. Я был бы в восторге от того, чтобы узнать, что я могу помещать несколько файлов в файл (только с одним из них публично).
Ответы
Ответ 1
Это вопрос из двух частей, поэтому я отвечу и по отдельности.
Компилирование двух файлов классов в один 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
Если основному файлу/классу нужен/использует класс другого файла, другой файл также будет скомпилирован в swf.
Ответ 3
Как говорит Hippo, компилятор автоматически скомпилирует в SWF все классы, используемые через ваш код, он рекурсивный по умолчанию.
Вы также можете прочитать все параметры, которые компилятор MXMLC имеет.
Ответ 4
Если вы заинтересованы в автоматизации этого процесса, вы также можете использовать Project Sprouts, который включает в себя довольно немного больше, чем вы просите для - но дает вам возможность запускать сборки и тестовые прогоны с терминала.
Ответ 5
Если вы используете 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.
},
},
})