Казахстан, Алматы, Гимназия им. Ахмета Байтурсынова №139, 2008 |
Методика организации командной работы над Flash-проектом
runtime-загрузчики
При использовании runtime sharing вы можете столкнуться с еще одной проблемой. Ваши флэш-ролики почему-то прекрасно работают с локального диска, но не работают с web-сервера. Или не работают на MacOS. Точнее, вроде бы работают, но символы, которые подгружаются с помощью runtime sharing, не работают. Почему это так, до конца не ясно. Но мы придумали способ, с помощью которого можно решить эту проблему.
В каждый *.swf-файл, из которого импортируются символы, нужно положить один дополнительный пустой символ и настроить ему такие же параметры runtime sharing, как и всем остальным символам из этого *.swf-файла. Затем в "клиентском" флэш-ролике нужно создать специальную предварительную сцену (если вы забыли, как создавать сцены, см. третью лекцию). По одному экземпляру каждого из вышеупомянутых пустых символов (один символ на каждый *.swf-файл, откуда что-либо импортируется) нужно затем поместить на эту сцену (которая будет проигрываться до основного содержимого вашего ролика).
Это действие приводит к нужному результату: похоже, что в таком случае весь *.swf-файл загружается заранее, после чего все другие определенные в нем символы можно использовать без проблем.
Контролируемая загрузка клипов
Представьте себе такую ситуацию. Вы выкладываете свой готовый, протестированный проект на удаленный сервер и видите, что ничего не работает. По крайней мере, при первом открытии веб-страницы, потому что после нажатия Refresh все, скорее всего, загрузится нормально.
В чем же дело?
Видимо, произошла "рассинхронизация" разных клипов. Не забывайте, что каждый клип живет своей жизнью. Пока все файлы лежали в локальной сети, порядок выполнения кода был один, а после того, как файлы положили в Интернет, - он изменился.
Например, код в уже загруженных клипах "убежал" вперед и выполнился до выполнения кода еще не загруженных клипов, хотя планировалось все наоборот.
Чтобы решить эту проблему, нужно как-то отследить момент загрузки всех клипов, и только после этого начать выполнять нужный код. Как это сделать?
У runtime-shared модулей есть такое свойство: пока модуль (*.swf) полностью не загрузится, никакие клипы в нем играть не начнут. Этим можно воспользоваться.
Создадим в каждом из *.swf-модулей по пустому символу, в каждом из которых поместим приблизительно такой код:
if (_global.swfModulesCounter == undefined) _global.swfModulesCounter = 0; global.swfModulesCounter++;
Этот код увеличивает счетчик загруженных .swf-модулей на единицу.
Теперь можно поместить в отдельной сцене флэш-ролика все эти пустые символы, а в нужном месте (в котором и предстоит ожидать загрузки всех модулей) сделать трехкадровый цикл с проверкой значения счетчика. Если оно достигло общего числа нужных *.swf-модулей - значит, можно продолжать выполнение.