Генерация отдельных SWF с классами из fla с большой библиотекой - PullRequest
1 голос
/ 11 января 2011

У меня есть серия больших FLA-файлов, которые были опубликованы в SWC-файлах, а затем использованы непосредственно во флэш-проекте. Вероятно, в общей сложности 1000+ объектов. По мере роста числа окончательный скомпилированный SWF становится довольно большим, поэтому я хочу загружать отдельные SWF каждого объекта только по мере необходимости. Затем мне нужно иметь возможность получить доступ и клонировать объект через имя класса из окончательного проекта AS.

Проблема заключается в том, что единственный способ экспортировать каждый из них - это 1) скопировать и вставить его в новый FLA-файл 2) дважды щелкнуть, чтобы «отредактировать» его, чтобы включить его, 3) сбросить связь (класс ) имя, так как оно было стерто, 4) опубликовать (то есть файл-> опубликовать) и назовите этот SWF.
Это займет некоторое время для 1000+ из них.

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

Есть ли более быстрый / лучший способ генерировать эти SWF-файлы?

(Я кратко изучил xfl, но похоже, что написание сценария для этого, учитывая, что для некоторых неизвестных потребуется больше времени, чем простое выполнение вручную).

1 Ответ

1 голос
/ 11 января 2011

Вы должны взглянуть на JSFL , который позволяет расширить Flash / написать скрипт, который автоматизирует эту задачу для вас.

Вы можете, например, написать скрипт, который просматривает циклэлементы в библиотеке и экспортирует swf только для видеоклипов, которые экспортируются для actioncript, и генерирует бит кода LoaderMax , который помещается в буфер обмена после завершения экспорта:

var doc   = fl.getDocumentDOM();
var dir   = 'file:///' + doc.path.substr(0,(doc.path.lastIndexOf('/')+1));
var lib   = doc.library;
var code  = 'var queue:LoaderMax = new LoaderMax({name:"queue"});\n';
var items = lib.items;
var iNum  = items.length;
var path;
var name;

fl.outputPanel.clear();

for(var i = 0 ; i < iNum ; i++){
    if(items[i].linkageExportForAS){
        name = items[i].linkageClassName;
        path = dir+name+'.swf';
        items[i].exportSWF(path);
        code += 'queue.append( new SWFLoader("'+name+'.swf", {name:"'+name+'"));\n';
    }
}

fl.clipCopyString(code);
fl.outputPanel.trace('symbols exported as swfs, code is in your clipboard');

Сохраните его как файл .jsfl для запуска, поместите его в папку Commands Flash (IDE), и он появится в меню «Команды» в интерфейсе.

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

Хотя есть несколько вещей, которые я не понял, я пытаюсьчтобы разбить его:

У меня есть серия больших файлов fla, которые были опубликованы в SWC, а затем использованы непосредственно в проекте Flash.Вероятно, в общей сложности 1000+ объектов.По мере того как число увеличивается, окончательно скомпилированный SWF становится довольно большим, поэтому я хочу загружать отдельные SWF каждого объекта только по мере необходимости.

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

Затем я должен иметь возможность получить доступ и клонировать объект через имя класса из окончательной версии.Проект AS.

Вы имеете в виду создание экземпляров классов из SWF-файлов, используя getDefinition ?

Проблема - единственный способ, который я нашел для экспортакаждый из них должен: 1) скопировать и вставить его в новый FLA-файл 2) дважды щелкнуть, чтобы «отредактировать» его, чтобы принудительно включить в него, 3) сбросить имя связи (класса), так как оно было стерто, 4) опубликовать (т.е.> опубликуйте) и назовите этот файл.

Для шага 1, не можете ли вы щелкнуть правой кнопкой мыши MovieClip и выбрать ExportSWF / ExportSWC (в зависимости от того, что вам нужно)?Я не понимаю, что ты имеешь в виду под «силой, которая включена».Вы имеете в виду галочку Экспорт для Actionscript?Кто / Что стирает связь?

...