Уильям Брэдберри
Эта статья родилась случайно, в связи с возникшей перепалкой на
форуме. Но! Меня утешает тот факт, что совершенно внезапно я, вдруг понял,
что в раз решил одну из любопытнейших проблем флэш-программирования. И
так Вашему вниманию:
ПРИСОЕДИНЕНИЕ ЗВУКА СКРИПТОМ ИЗ ПОДГРУЖЕННОГО
ВНЕШНЕГО ФАЙЛА. (с которым теперь можно делать, что угодно)
Тут описан
способ загрузки в основной флэш-ролик другого файла (*.swf) в который, в свою
очередь включен только звук.
Начнем, как обычно с создания НОВОГО
документа
1. Откроем редактор flash5 2. сохраним новый файл с
названием "dolphin.fla" 3. нажимаем CNTRL+R, откроется окошко
импорта
4. выбираем звук (в примере
*.mp3), импортируем. 5. открываем библиотеку символов (CNTRL+L) 6. делаем
правый клик на нашем звуке, выбираем linkage
7. откроется окошко "SYMBOL LINKAGE
PROPERIES" 8. ставим напротив [ export this symbol ] точечку и напротив
[ identifier ] вписываем love.
OK.
на этом все. делаем публикацию (SHIFT+F12 ) и
закрываем файл
9. создадим новый файл 10. сохраним новый файл с
названием "loadDolphin.fla" 11. выделим первый кадр в сцене и по
правой кнопке в контекстном меню выберем actions 12. в окошке "frame
actions" впишем такой код:
loadMovie("dolphin.swf",1) // ЭТОТ КОД ЗАГРУЗИТ ФАЙЛ
"dolphin.swf" В УРОВЕНЬ ?1 ( _level1 )
далее, чтобы воспользоваться нашим звуком из этого
файла необходимо проверить, загрузился ли он полностью. для этого мы
пропустим один кадр, выделим кадр ?3 в сцене и вставим пустой ключевой кадр
(F7) для написания будущего кода
13. выделим 3 кадр и в окне
"frame actions" напишем
код:
if(_level1.getBytesLoaded()==_level1.getBytesTotal()) { Soun =
new
Sound(_level1) Soun.attachSound("love") Soun.start(0,999); stop
(); }else{gotoAndPlay(_currentframe-1)}
//=================================================== пояснения: if
- условие (если).....
----------- _level1.getBytesLoaded()
....равно..... _level1.getBytesTotal()
....то....
_level1.getBytesLoaded() - функция, показывающая
(возвращающая) нам значение в байтах от
загруженного. В данном примере
обратите (внимание!)
стоит _level1
- значит просчитыватся
будет
именно он.
_level1.getBytesTotal() - функция, определяющая
полный размер указанного объекта (левела) в
байтах. --------
else - иначе пока (если условие if) не
выполнено, то есть [_level1.getBytesLoaded() не равно
_level1.getBytesTotal()] то {gotoAndPlay(_currentframe-1)} - вернуться на
предыдущий кадр и проиграть заново
-------------------- примечание:
используйте _currentframe-1 вместо прямого указания номера, если в
последствии Вам вздумается перенести код в другие
кадры. -------------------- и так: --- Если (if) загруженные байты
(getBytesLoaded() )равны тотальному их количеству ( getBytesTotal() )
--- ...то выполнить скрипт...... -------- далее, собсно сам
скрипт -------------------- Soun = new Sound(_level1) - создаем новый
звуковой объект в _level1 Soun.attachSound("love") - обращаемся к
лежащему в _level1 звуку по имени !в кавычках! Soun.start(0,999); - запускаем
звук и проигрываем его 999 раз :) stop (); - останавливаем проигрывание
сцены --------------------
удобство данного метода очевидно -
Вы сможете легко заменить, рандомно загрузить или просто использовать в
разных роликах любой звук, без вмешательства в код основного Вашего
ролика.
Литература по FLASH
|