Статьи

Пакетное создание SWF-файлов с использованием DOS и компилятора командной строки Flex

Давайте посмотрим на создание массового контента. Мы собираемся использовать пакетный файл DOS для быстрой генерации нескольких SWF-файлов, содержащих различный текст, звук, изображения и т. Д., Но которые следуют определенному нами шаблону.


Должен признать, я любитель SWF. В наши дни вы много слышите о HTML5 и других новых технологиях, которые каким-то образом выведут старый добрый SWF из бизнеса, но я буду одним из тех разработчиков, которые будут цепляться за мой любимый SWF так долго, как только смогут. За последние 14 лет SWF была уникальной в своей способности доставлять мультимедийный контент через Интернет, еще до того, как какие-либо другие технологии могли даже приблизиться.

Для электронного обучения SWF по-прежнему в значительной степени является стандартом и является тем, что я использую во всем своем уроке. Я использую его для всего: от видео виртуального репетитора до векторных изображений, векторного текста и интерактивных действий всех видов.

Для создания массового контента я обнаружил, что ничто не работает так же быстро и мощно, как хороший пакетный файл DOS. Вы можете быстро написать и изменить пакетный файл, чтобы сделать все виды интересных вещей, и если вы работаете с большим количеством изображений, текста и звука, пакетный файл может быстро превратить это в мультимедийный контент в форме SWF ,

Причины, по которым вы можете сделать это, включают:

  1. У вас не установлен Flash на ПК, на котором вы работаете
  2. Вы хотите создавать SWF оптом
  3. Вы хотите создать SWF из командной строки

Единственный инструмент в Windows, который вам нужен, кроме редактора кода, — это Flex SDK и, опционально, приложение для преобразования ASCII в UTF-8 с открытым исходным кодом, называемое iconv, из проекта GnuWin , если вы планируете использовать в тексте международные символы или знаки ударения. ,


Давайте посмотрим на конечный результат, к которому мы будем стремиться


Массовое создание означает, что все ваши SWF-файлы будут следовать одному шаблону, поэтому решите, какие элементы вам нужны: векторный текст, изображение, аудио и т. Д.


Назовите ваши файлы соответствующим образом: каждый текст, изображение и аудиофайл должны иметь соответствующие имена, а также регистр. Если ваши файлы дезорганизованы, вы можете загрузить файловую утилиту для пакетного переименования, преобразования в строчные буквы и т. Д. Одна из таких программ, которую я обнаружил, называется « Полезные утилиты файлов» .

Вы можете открыть текстовый файл и сохранить список абсолютных путей к этим элементам, включая любые шрифты, которые вы планируете внедрить.

В папке с исходным кодом / утилитой, которую вы скачали для этого учебного пособия, вы найдете несколько небольших пакетных сценариев, которые помогут вам создать основной список слов для использования при создании SWF. Если имена ваших файлов содержат более одного слова, используйте тире между словами [-]. Черточки уже размещены в моем основном файле .bat, который создает SWF-файлы. При использовании дефисов они преобразуются в числа, а затем преобразуются обратно в дефисы с помощью другого небольшого служебного файла, иначе файлы вашего класса AS3 не будут компилироваться.


Откройте редактор кода (я всегда использую Notepad ++ для многоязычного кодирования, это удивительное приложение с открытым исходным кодом).

На следующих шагах я выделю возможные элементы, которые вы можете добавить в определение файла класса, которое будет использоваться вашим файлом DOS для генерации всех ваших SWF-файлов.

Если вы хотите продолжить, изучив файл класса, который я использовал для этих фрагментов, откройте файл source / lago.as в вашем пакете загрузок для этого урока.

Мы начнем с добавления общего макета пакета в AS3, который без каких-либо функций будет выглядеть примерно так:

01
02
03
04
05
06
07
08
09
10
package
{
import flash.display.Sprite;
import flash.display.*;
  
    public class lago extends Sprite
    {
       
    }
}

Теперь давайте добавим некоторые актуальные элементы в наш SWF!


Как всегда, вы начинаете с импорта необходимых файлов классов:

1
2
import flash.media.Sound;
import flash.media.SoundChannel;

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

1
2
3
4
[Embed(source=»C:/Users/You/Desktop/sound/lago.mp3″)]
      public var soundClass:Class;
      var sndChannel:SoundChannel;
      var smallSound:Sound = new soundClass() as Sound;

Вот код для вставки изображения:

1
2
3
[Embed(source=»C:/Users/You/Desktop/images/lago.swf»)]
    public var Picture:Class;
    var pic:Sprite = new Picture();

В моем файле я сначала создаю Sprite, к которому я добавляю изображение, но если вы хотите добавить изображение непосредственно на сцену, вы просто используете:

1
addChild(pic);

Поскольку я использую международные символы, я встраиваю свой шрифт, указав, какие символы Unicode следует включать:

1
2
[Embed(mimeType=»application/x-font», unicodeRange=’U+0061-U+007A,U+00E1-U+00E1,U+00E9-U+00E9,U+00ED-U+00ED,U+00F1-U+00F1,U+003F-U+003F,U+00FA-U+00FA,U+00E1-U+00E1,U+00F3-U+00F3,U+00BF-U+00BF,U+00A1-U+00A1′, source=»C:/Users/You/Desktop/BradBunR.ttf»,fontName=»Brady»)]
private var terminatorFontClass:Class;

Чтобы увидеть, какие символы вам нужны, вы можете проверить эту таблицу здесь , на веб-сайте Космического, научного и инженерного факультетов Университета Висконсин-Мэдисон. В Windows вы также можете открыть программу charmap.exe и посмотреть значения для нужных вам символов.

Charmap.exe

Начните с импорта необходимых классов:

1
2
3
import flash.text.*;
import flash.text.TextFormat;
import flash.text.AntiAliasType;

Теперь создайте textField и присоедините к нему textFormat :

1
var __text_tf:TextField = new TextField(),__format:TextFormat = new TextFormat();

Теперь давайте применим некоторые стили к нашему тексту. Я использовал размер для текста ниже, но в моем реальном файле я настраиваю размер на основе длины строки, чтобы эта строка размера не использовалась.

01
02
03
04
05
06
07
08
09
10
__format.size = 30;
__format.font=»Brady»;
__format.letterSpacing=6;
__format.align = TextFormatAlign.CENTER;
__text_tf.width=500;
__text_tf.embedFonts = true;
__text_tf.wordWrap = true;
__text_tf.defaultTextFormat = __format;
__text_tf.autoSize=»center»;
__text_tf.text = str;

Это был немного сложный кусок кода, но если вы пытаетесь создавать массовые SWF-выражения из фраз и даже предложений, а не просто отдельные слова, вы обнаружите, что необходимо учитывать разные длины строк. В противном случае некоторые ваши слова будут либо слишком большими, либо слишком маленькими.

01
02
03
04
05
06
07
08
09
10
11
if (str.length <= 9) {
__format.size = 70;
} else if (str.length >= 14 && str.length <= 22) {
__format.size = 50;
__text_tf.defaultTextFormat = __format;
} else if (str.length >= 28 && str.length <= 48) {
__format.size = 40;
__text_tf.defaultTextFormat = __format;
} else {
__format.size = 50;
}

Конечно, вы можете изменить эти значения в соответствии с вашими потребностями в контенте.


textField эта строка ускользнула от меня и имела решающее значение для правильного textField текста в текстовом textField .

1
__text_tf.autoSize=»center»;

Этот код занял большую часть дня, чтобы разобраться в этом, и я нашел единственный способ правильно изменить размер и центрировать SWF. Вы можете изменить значения x, y, targetHeight и targetWidth зависимости от размера ваших собственных SWF-файлов, но в противном случае этот код может помочь вам добиться центрирования и изменения размера:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var ratio:Number;
var wide:Number;
var targetWidth:Number = 400;
var targetHeight:Number = 250;
  
if (pic.width < targetWidth) {
ratio = targetWidth / pic.width;
pic.width = targetWidth;
pic.height *= ratio;
wide = pic.width*ratio;
}
if (pic.height < targetHeight) {
ratio = targetHeight / pic.height;
pic.width *= ratio;
pic.height = targetHeight;
wide = pic.width*ratio;
}
if (pic.width > targetWidth) {
ratio = targetWidth / pic.width;
pic.width *= ratio;
pic.height *= ratio;
wide = pic.width*ratio;
}
if (pic.height > targetHeight) {
ratio = targetHeight / pic.height;
pic.width *= ratio;
pic.height *= ratio;
wide = pic.width*ratio;
}
pic.y = 110;
pic.x = 250 — wide/2 ;
pic.scaleX = pic.scaleY;
square.addChild(pic);

}


Пожалуйста, взгляните на пример файла source / lago.as, если вам нужна дополнительная помощь в создании шаблона файла класса, так как теперь пришло время создать DOS-версию вашего файла.

Откройте файл lago.bat.txt в исходном каталоге вашей загрузки и сохраните имя в файле lago.bat. Если вы используете редактор кода, такой как Notepad ++, у вас должен быть синтаксис выделения пакетов, который теперь будет применяться. Хотя подсветка синтаксиса не обязательна, она делает пакетное кодирование намного проще.

Помните, что DOS требует, чтобы вы экранировали определенные символы, поставив перед ними префикс [^] (или иногда двойной каркас [^^], включая:

  • (
  • )
  • >
  • &

Также запомните следующие вещи:

  1. Каждая строка должна начинаться с echo чтобы она была включена
  2. Каждая строка должна заканчиваться >> !fileoutta! так что он будет добавлен в наш .bat файл SWF создателя

Используйте программу типа Notepad ++ для запуска поиска и замены RegEx, сначала экранируя необходимые символы, затем добавляя команды echo в начале строк или там, где находится \ n, и добавляя >> !fileoutta! до возврата или где \ r найден. Например:

Найти:

\ п

Заменить:

\ n echo

И

Найти:

Заменить:

>> !fileoutta!

Наконец сохраните эту версию вашего файла для DOS, т.е. myclass.bat .


Чтобы лучше следовать, откройте следующий файл из исходного каталога вашей загрузки: batch_create_swfs_word_picture_w_audio.bat.txt . Измените окончание файла на .bat и сохраните.

Очки об этом .bat файле:

  1. Он будет работать в папке, где вы его поместите
  2. Он будет использовать имя папки в качестве переменной
  3. Ожидается, что любые изображения будут находиться в подкаталоге / images
  4. Ожидается, что любые аудиофайлы будут находиться в подкаталоге / sound.
  5. Требуются абсолютные пути к компилятору Flex, любые шрифты, которые вы хотите встроить, и, опционально, программа iconv.exe.

Я использую файл списка главных слов для создания своих SWF-файлов, который находится в source / glossary / glossary.txt . Чтобы создать такой файл из папки с файлами, вы можете использовать один из моих .bat файлов утилит, найденных в папке source / utility .

Имейте в виду, что при пакетной обработке вы должны быть очень добросовестными при именовании любых ресурсов. Наилучшим подходом является присвоение любому изображению и аудиоустройствам, предназначенным для того же SWF-файла, одного и того же имени, а затем помещать их в правильные подпапки, например:

звук / lago.mp3

Изображения / lago.swf

Файл glossary / glossary.txt для создания только SWF для lago будет просто читать

Яго

Прелесть моей системы в том, что мой файл glossary.txt может содержать неограниченное количество слов — фактически я запустил его с более чем 1000 словами, без проблем! Но ресурсы, которые вы пытаетесь внедрить, должны существовать и находиться в правильном месте, иметь правильное имя, иначе SWF для этого слова не сможет скомпилироваться.


Посмотрите еще раз на файл batch_create_swfs_word_picture_w_audio.bat . Прокрутите вниз до раздела под заголовком REM 1 , и вы найдете начало области, в которую вы можете добавить версию DOS для пользовательского файла класса AS3, созданного на шаге 11.

Стоит отметить, что я использую переменную !myvar! для имени папки, чтобы я мог перетащить этот файл .bat в любую папку в главном каталоге на моем компьютере, и пути к файлам будут правильными, пока я использую подкаталоги / images и / sound . Изучите мой код, прежде чем вставлять свой собственный, чтобы вы могли сделать правильные замены.

Разделы с названиями REM 1 , REM 2 , REM 3 и REM 4 требуют настройки на основе ваших собственных путей к папкам.


Откройте файл utf_convert.bat.txt и переименуйте его в utf_convert.bat . Найдите разделы REM 1 и REM 2 и введите правильные пути для ваших файлов.


Время получать компиляцию! Найдите главный каталог, который вы использовали для всех ваших путей, и создайте новую папку с именем trialrun . Откройте папку загрузки для этого учебника, скопируйте подпапки из source / trialrun и вставьте их в папку trialrun, которую вы только что создали в своей главной директории.


Скопируйте batch_create_swfs_word_picture_w_audio.bat и, возможно, файлы utf_convert.bat в только что созданный вами каталог trialrun .


Время попробовать пакетное создание SWF! Нажмите на batch_create_swfs_word_picture_w_audio.bat. Это создаст файлы класса AS3, которые будут использоваться для генерации отдельных SWF-файлов.


Вам будет дано указание в консоли командной строки щелкнуть файлы utf_convert.bat и utf_click_to_convert.bat в указанном порядке. Это преобразует все ваши файлы класса AS3 в UTF-8-совместимые файлы перед запуском компилятора Flex AS3.


После завершения преобразования UTF-8 консоль командной строки будет ждать, пока вы нажмете любую клавишу, прежде чем продолжить. Как только вы это сделаете, начнется фактическая компиляция SWF. Для пробной операции в каталоге trialrun / word_scripts_sp_au_utf8 будет создано 3 SWF-файла.


Откройте каталог trialrun / word_scripts_sp_au_utf8 и посмотрите, есть ли там ваши SWF-файлы. Помимо файлов классов .as вы должны увидеть: lago.swf , nieve.swf и hielo.swf .
Когда вы запускаете свои собственные списки слов для пакетного создания SWF, у вас могут быть длинные имена файлов, которые необходимо переименовать в пакетном режиме. Поскольку у вас не может быть тире в именах классов AS3, я заменяю их при необходимости числами, а затем запускаю небольшую утилиту .bat, которая находится в утилите / rename_long_swfs.bat.txt вашей папки загрузки. Переименуйте расширение этого файла в .bat, затем скопируйте его в папку word_scripts_sp_au_utf8, где находятся ваши готовые SWF, чтобы сделать это переименование для группы SWF.


Я надеюсь, что этот урок поможет некоторым из вас насладиться чудесами и настоящим блаженством программирования, которые могут возникнуть при создании пакета SWF через DOS. Наблюдать за сотнями прекрасных мультимедийных SWF-файлов, созданных всего несколькими щелчками мыши, — отличное чувство! Большое спасибо за то, что прочитали этот урок, и я с нетерпением жду ваших комментариев или вопросов.

Примечание: стоит отметить, что ANT часто считается достойной альтернативой для создания пакетных файлов, особенно для пользователей Mac. Проверьте Джесси Фримена Введение в AntPile, чтобы узнать больше.