![]() |
Записать байткод
Здравствуйте
Второй день сижу над спецификацией формата swf и глаза, соответственно, немного в кучу =) Собственно, страшного (вроде) в нем ничего нет... НО Если кто-нибудь имел с ним дело, подскажите пожалуйста, как правильно записать весь этот ужас в байткод - я имею в виду формат записи чисел: UI8 UI16 SI8 SI8[n] ... ... и т.д. и т.п. ЗЫ Вдруг захотелось сгенерировать одной флешкой другую флешку =)) ЗЗЫ я и сам понимаю, что много хочу, и поэтому буду рад любым подсказкам/ наводкам/ ссылкам |
UI8 - writeByte()
UI16 - writeShort() SI8 - writeByte() SI8[n] - не знаю что такое :) Проблематичнее когда нужно записывать биты, очень длинные числа, или числа с компрессией - я с последними двумя так и не разобрался до конца. |
>>Вдруг захотелось сгенерировать одной флешкой другую флешку =))
а, чего должно быть в сгенеренной флешке? Если сгенереннные флешки однотипны, те. должны меняться только какие-то отдельные данные, не думаю, что ваша цель сделать компилятор флеша на флеше. То можно поступить так, сделать флешку шаблон, в которой оставить место под эти меняющиеся данные, те. флешка с длинной строкой, строку можно забить хоть так: Код:
var s:String='11111111111111111111111111111111111111111111111111';Ембедим флешку-шаблон во флешку генератор флешек, и вот пользователь чето рисует, тягает или пишет, нажимает на кнопку сохранить как swf, ищем во флешке шаблоне единицы, или берем положение единиц из константы и заменяем единицы на данные, которые натворил пользователь. Ну, а дальше save. |
Ну вообще-то я именно хочу сделать компилятор флеша на флеше =)
ШУЧУ Я хочу добиться примерно вот такого функционала: 1- Выбрали картинку на рабочем столе (FileReference) 2- Выбрали mp3 звук ... все так же точно 3- Выбрали другую swf с анимацией, звуками и т.д. 4- Распарсили swf(из пункта 3) на байткод, вынули оттуда имена и содержимое классов (то есть других картинок, звуков и swf - ... маленькая такая рекурсия =) ) 5- зарегистрировали полученные классы, отобразили это графически и выбрали, что в нашей библиотеке должно остаться, а заодно и прописали новые className всем элементам 6- FileReference.save() Все очень просто и очень сложно одновременно На выходе - удобный инструмент для быстрого создания и редактирования swf-библиотек (без использования Flash вообще, что, ИМХО, +1) 2 AlexLexcuk ну в общем-то примерно так... Создать начало, создать конец, а середину генерировать Цитата:
UPD: нашел: Project -> Properties -> вкладка Compiler Options -> Optimize bytecode 2 wvxvw Цитата:
PS На самом деле для меня сейчас важен вот такой вопрос: как из числа 4 получить число 0x04 (как его так отобразить???) Потому как читая спецификацию swf заметил, что там все именно так и записывается (с такой записью удобнее выстраивать байты по старшинству там, где это необходимо) |
|
etc, спасибо за ссылку
В общем-то идея и родилась, глядя на строчку getDefinitionNames() =) Вы не будете против, если я использую для экспериментов часть Вашего кода? |
Да пожалуйста.
|
Цитата:
|
ResourceThief надо апгрейдить, там косяков выше крыши, на половине флешек валится в хлам. :(
|
gloomyBrain, это Вам надо подробно изучать спецификацию SWF v9-10, потому что просто так из байткода графический элемент или звук не выкинешь. Весь байткод это цепочка тегов, в каждом описан один элемент, а заголовок тега указывает на его длину, то есть не как в xml - тег открылся - тег закрылся, конец надо вычислять, и если какой то тег выбрасывать, то соответственно все заголовки надо переписывать. etc, я прально говорю?
|
| Часовой пояс GMT +4, время: 09:24. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.