Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Динамическое создание swf-файла (http://www.flasher.ru/forum/showthread.php?t=195376)

zuxul 10.03.2013 23:54

Вложений: 1
Склепал небольшой примерчик. Сырой и плохо все объясняющий, но все же.
Во вложении - проект flashdevelop-а, в котором берется заготовка - experimental.swf, модифицируется, и сохраняется.
experimental.swf - swf файл, в котором есть только один шейп с одной ломанной (две черные линии).
В коде добавляется еще одна линия и сохраняется в файл.
По идее, модифицировать можно все что угодно, но нужно покопаться в спецификации формата, чтобы понять, как это все модифицировать правильно.

cleptoman 11.03.2013 11:17

если не коврыять спеку, то проще всего, мне кажется, скармливать конфиг/последовательность действий в mxmlc через какие то заготовки и на выходе получить скомпилированный ролик

zuxul 11.03.2013 11:34

Цитата:

Сообщение от cleptoman (Сообщение 1124527)
если не коврыять спеку, то проще всего, мне кажется, скармливать конфиг/последовательность действий в mxmlc через какие то заготовки и на выходе получить скомпилированный ролик

Так для этого нужен еще сервер.

Я тут подумал, что
Цитата:

1 - Как я понял, у Вас уже есть код, для отображения нарисованного из xml. Значит, нужно этот код внедрить в swf вместе с xml-кой.
очень похож на вариант от Alex Lexcuk в 3 посте:
- делаем тестовый swf файл, который, например, отображает одну линию. (линия это записана в виде последовательности действий в строке)
- в написанном редакторе загружаем этот тестовый swf файл и подменяем строку последовательности действий и сохраняем получившийся файл

cleptoman 11.03.2013 12:06

Цитата:

Так для этого нужен еще сервер.
ну, вообще-то, не нужен..просто не понятно где и как публикуется аппликуха автора

Psy 11.03.2013 15:36

Цитата:

Сообщение от zuxul (Сообщение 1124491)
Склепал небольшой примерчик. Сырой и плохо все объясняющий, но все же.
Во вложении - проект flashdevelop-а, в котором берется заготовка - experimental.swf, модифицируется, и сохраняется.
experimental.swf - swf файл, в котором есть только один шейп с одной ломанной (две черные линии).
В коде добавляется еще одна линия и сохраняется в файл.
По идее, модифицировать можно все что угодно, но нужно покопаться в спецификации формата, чтобы понять, как это все модифицировать правильно.

Спасибо большое за пример, попробую разобраться.

А приложение - это курсовая работа. И по сути все равно, использовать сервер или нет. Главное - на выходе получать swf файл с записью рисования.

Psy 31.03.2013 17:21

Цитата:

Сообщение от cleptoman (Сообщение 1124527)
если не коврыять спеку, то проще всего, мне кажется, скармливать конфиг/последовательность действий в mxmlc через какие то заготовки и на выходе получить скомпилированный ролик

Вы не могли бы объяснить поподробнее, что имеется в виду? Как можно это сделать без использования сервера?

zuxul 01.04.2013 18:47

Имеется в виду - компилировать какую-либо заготовку, с изменённым содержанием: например, пользователь нарисовал круг - в заготовке добавляется graphics.drawCirlle.
Сделать без сервера, это наверное сделать air приложение и добавить туда компилятор mxmlc - как-то так.

Александр Мостовой 01.04.2013 23:10

Сам не пользовался этой библиотекой, но встречал такую штуку как as3swf, которая позволяет редактировать swf файлы
http://blog.codestage.ru/ru/2012/07/...-code-library/

Nooob 02.04.2013 01:51

в байткоде swf есть метаданные, вида
Код:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
        <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/">
                <xmp:CreatorTool>Adobe Flash Professional CS6 - build 537</xmp:CreatorTool>
                <xmp:CreateDate>2013-04-01T23:59:42+04:00</xmp:CreateDate>
                <xmp:MetadataDate>2013-04-02T00:39:37+04:00</xmp:MetadataDate>
                <xmp:ModifyDate>2013-04-02T00:39:37+04:00</xmp:ModifyDate>
        </rdf:Description>
        <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
                <dc:format>application/x-shockwave-flash</dc:format>
                <dc:description>
                        <rdf:Alt>
                                <rdf:li xml:lang="x-default">Сюда можно писать - что угодно</rdf:li>
                        </rdf:Alt>
                </dc:description>
        </rdf:Description>
        <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#">
                <xmpMM:DocumentID>xmp.did:6624B0100C9BE211A5B9E13CC5D6EC22</xmpMM:DocumentID>
                <xmpMM:InstanceID>xmp.iid:6624B0100C9BE211A5B9E13CC5D6EC22</xmpMM:InstanceID>
                <xmpMM:OriginalDocumentID>xmp.did:5F4B4FAD069BE211AE02939077AC263B</xmpMM:OriginalDocumentID>
                <xmpMM:DerivedFrom rdf:parseType="Resource">
                        <stRef:instanceID>xmp.iid:6024B0100C9BE211A5B9E13CC5D6EC22</stRef:instanceID>
                        <stRef:documentID>xmp.did:5F4B4FAD069BE211AE02939077AC263B</stRef:documentID>
                        <stRef:originalDocumentID>xmp.did:5F4B4FAD069BE211AE02939077AC263B</stRef:originalDocumentID>
                </xmpMM:DerivedFrom>
        </rdf:Description>
</rdf:RDF>

в метаданных есть такое поле dc:description, его можно заполнить текстом, но длина метаданных не должна изменяться.
ну и собственно читать его через свои байты (loaderInfo.bytes) и уже оперировать этой записью

Psy 06.04.2013 15:16

Спасибо большое за разъяснения.
У меня следующий вопрос есть.. Когда я компилирую AIR-проект в самом флеше, все нормально. Но когда запускаю саму swf-ку, возникает ошибка VerifyError: Error #1014: Не удалось найти класс flash.filesystem::File.
Можете подсказать, как обойти эту проблему?

Добавлено через 50 минут
И еще один вопрос.. Вот из основного редактора я сохраняю данные в XML-файл.
В программе-проигрывателе я встраиваю этот файл, и считываю данные, воспроизвожу ролик. Но обновляется это файлик с проигрывателем, естественно, только после перезапуска в самом флеше. А как можно сделать так, чтобы он брал данные из нового xml ?


Часовой пояс GMT +4, время: 08:46.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.