Вопрос о классовой борьбе

18 views
Skip to first unread message

Daniil Tutubalin

unread,
Jul 7, 2014, 10:04:06 PM7/7/14
to ruF...@googlegroups.com
Здравствуйте, уважаемые!

Мне требуется помощь флеш-археолога.

Есть проект на AS 2.0. Возможностей, желания да и острой необходимости перелопачивать всё на AS 3.0 нет.
В проекте 100500 FLA-файлов, использующих общую кодобазу, таким образом один и тот же класс может оказаться в нескольких разных SWF.
То, что они занимают больше места на жёстком диске - это полбеды. Главная беда в том, что один и тот же класс может оказаться разным в разных флешках.

Например, нужно что-то изменить в Foo.fla, причём изменения застрагивают некий общий класс Common.as
Откомпилировали - получили Foo.swf с новой версией класса.
Однако этот же класс используется и в Bar.fla, который последний раз трогали в 1913 году и в Bar.swf сохранилась дореволюционная версия этого класса.

Теперь всё зависит от того, какая из этих флешек загрузится раньше. Кто раньше встал - того и тапки.
Если повезёт, то Foo.swf загразится первой и всё будет работать так, как мы хотели. Если не повезёт и первой загрузится Bar.swf, то класс будет старый, и мы будем
долго удивляться, а почему ни одно из наших изменений, включая миллион добавленных трейсов, не работают.
Из-за того, что флешек 100500, перекомпиливать их все каждый раз - занятие не самое весёлое.

Кто-нибудь может подсказать какое-нибудь элегантное решение для этого class hell'а?
У меня была мысль использовать MTASC, но прежде чем углубиться в эксперименты, я хотел бы послушать мудрость старейшин.

Заранее спасибо.

Андрей Скорик

unread,
Jul 8, 2014, 1:18:33 AM7/8/14
to ruFlash
:) Мудрые старейшины обязательно зададут вопрос - почему копание в проекте N-летней давности всегда вызывает ассоциации с проктологией.

А если сделать лоадер и библиотечную флешку с классами, либу грузить лоадером первой, а потом уже он пусть тянет само приложение. Тапки всегда за либой - для исправлений в коде - нужно пересобирать только свою либу. Теоретически можно ожидать каких-то проблемок, конечно, если контракты класса менялись, а не только внутренняя реализация. Но если повезет :) это могло бы быть выходом. 
--
С уважением, Скорик Андрей. andrew...@gmail.com

Michael Antipin

unread,
Jul 12, 2014, 3:00:46 AM7/12/14
to ruf...@googlegroups.com
Хм. Ну вот такой кривой и сучковатый костыль приходит на ум.
Задача при старте приложения получить самые свежие классы, так?
Однажды инициализировавшись, они уже не будут вытеснены другими.
Делаем на чем умеем утилиту, которая находит самую свежую свфку (или
свфки, если наборы классов разные), сохраняет в текстовый файлик, что
нашлось.
При старте приложения загружаем ее ради инициализации классов, и
пофиг, что она делает.

Или второй вариант (менее сучковатый, кажется):
собираем командной строкой всю эту скотобазу в один свф, его грузим в
начале приложения.

Это легко сдалеть тасками для анта, так же легко можно на баше (да в
принципе на чем угодно).
> --
> --
> отменить подписку: ruFlash-u...@googlegroups.com
> сообщение в группу: ruF...@googlegroups.com
> страница группы: http://groups.google.com/group/ruFlash
> правила группы: http://groups.google.com/group/ruFlash/web/rules
> на facebook: http://www.facebook.com/home.php?sk=group_163903643627621
>
> ---
> Вы получили это сообщение, поскольку подписаны на группу "ruFlash".
> Чтобы отменить подписку на эту группу и больше не получать от нее сообщения,
> отправьте письмо на электронный адрес ruflash+u...@googlegroups.com.
> Чтобы настроить другие параметры, перейдите по ссылке
> https://groups.google.com/d/optout.



--

--
Michael Antipin
Reply all
Reply to author
Forward
0 new messages