ActionScript - объединение ресурсов AS2 в один SWF

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

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

У меня нет доступа к Flex или mxmlc (и поскольку AS основывается на временной шкале, они не обязательно мне помогут). Есть предположения?

Спасибо!

PS ... если нет возможности сделать именно то, что я говорю, я мог бы иметь дело с тем, чтобы все активы были в папке "assets" или что-то в этом роде, поэтому я бы просто возился с main.swf и assets папка. Проблема здесь в том, что все ссылки на ресурсы предполагают, что они находятся в той же папке, что и файл main.swf, поэтому все предполагается локальным ... есть ли способ изменить объем всех внешних ссылок во Flash (так, например, все локальные ссылки в коде фактически ищутся в / assets)?


person Community    schedule 13.10.2008    source источник
comment
фу ... кодирование на временной шкале? сожги его огнем!   -  person davr    schedule 13.10.2008


Ответы (3)


Вы могли декомпилировать свои swf-файлы в XML с помощью swfmill / mtasc и использовать модный XSLT для их рекомбинации и перекомпиляции с помощью swfmill / mtasc.

Если это не сработает, и если вы используете MovieClip.loadMovie или MovieClipLoader.loadMovie, вы можете перегрузить их методы и перехватить URL:

var realLoadMovie:Function = MovieClip.prototype.loadMovie;

MovieClip.prototype.loadMovie = function(url:String, method:String) {
    return realLoadMovie("assets/" + url, method);
}

var test:MovieClip = createEmptyMovieClip("testclip", getNextHighestDepth());
test.loadMovie("test.swf");

Вам нужно будет выполнить дополнительный синтаксический анализ строки, если URL-адреса имеют префикс типа ресурса, например file: //

person nikaji    schedule 12.09.2009
comment
Моя ошибка, возврат не нужен. - person nikaji; 26.01.2011

Существует базовый параметр, который вы можете добавить при встраивании SWF, например, выровнять, масштабировать и т. Д. Если задана база, все относительные URL-адреса будут иметь префикс любого пути, который вы определите (ну, почти все; объекты видео и ссылки на файлы являются исключение здесь). В остальном я бы выбрал решение Никаджи.

person Juan Pablo Califano    schedule 17.04.2010

Привет, Джастин,

Похоже, вам нужно изучить использование общих библиотек. Проверить:

http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_14767

person Rafe    schedule 13.10.2008
comment
не являются ли разделяемые библиотеки внешними файлами из основного SWF? как в противоположность объединению всего в один SWF? - person davr; 13.10.2008