Подтвердить что ты не робот

Компиляция ActionScript из командной строки с использованием MXMLC

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

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

MXMLC foo.as bar.as

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

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

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

4b9b3361

Ответ 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.
    },
  },
})