Для заказчика
Главная
Информация
Услуги
Цены
Контакты
Обмен опытом
WEB, куда уходят профессионалы
WEB мастеру
Раскрутка сайта
О контенте
Баннерные сети
Дизайнеру
Macromedia Flash
PhotoShop
О баннерах
Пользователю
Полезные ссылки
Как искать в сети

Macromedia Flash: полезные приёмы.   

Русификация ActionScript консоли
Предзагрузка и метод attachSound
Конвертация win2koi средствами flash

В пятой версии Flash'а имеется новая возможность, которая, на мой взгляд, вызывает проблему у каждого, кто с ней сталкивался. Это метод attachSound, позволяющий управлять звуком при помощи ActionScript. Многие уже обнаружили, что при использовании метода attachSound прелоадер (preloader) работает неправильно и причина этого в следующем. При использование метода attachSound, Flash при экспорте помещает все залинкованные (linkage) звуки, в самое начало вашего Flash-клипа. По этой причине они загружаются до прелоадера, который не начинает работать до тех пор, пока они полностью не будут загружены, что обесценивает его использование. В этой статье FlashGuru излагает способ решения данной проблемы. (Хотя в статье речь идет только о методе attachSound, предлагаемое автором решение позволяет работать с attachMovie, т.е. линковать мувиклипы - Прим. переводчика)

По многим причинам имеет смысл размещать звук внутри отдельного SWF-файла и загружать его в первом кадре основного клипа. Одна из причин - создание зацикленного музыкального фона, воспроизводимого независимо от событий, происходящих в основном клипе.

Итак, создайте новый клип, в первый кадр которого поместите следующий скрипт:

function mysound(){
    mysoundobj=new Sound(this)
    mysoundobj.attachSound("idname")
    mysoundobj.start()
}

Этот скрипт является функцией, которую можно вызывать из любого места клипа, в любое время, и которая начнет воспроизводить звук, указанный, как "idname". Для создания этого идентификатора, выделите нужный звук в библиотеке, правым щелчком откройте контекстное меню и выберите опцию "Linkage...". В открывшемся окне диалога включите опцию "export this symbol" и укажите idname в качестве идентификатора. Эта функция активизируется по команде:

mysound()

Теперь созданный клип может содержать весь звук для вашего Flash-клипа. Создайте столько таких функций, сколько вам требуется. Фактически же, можно использовать одну функцию для подключения множества звуков, просто передавая ей нужные идентификаторы в качестве параметра, как делается в следующем скрипте:

function mysound(idname){
    mysoundobj=new Sound(this);
    mysoundobj.attachSound(idname);
    mysoundobj.start();
}

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

mysound("idname")

Сохраните созданный вами клип под именем "sound.fla" и экспортируйте его в SWF-файл "sound.swf" (File -> Export Movie)

Теперь займемся прелоадером. Внутри основного Flash-клипа создайте новый мувик (movieclip) и поместите его в тот кадр на главной линейке (Timeline), с которого хотите начать загрузку звука из библиотеки. Выделите этот мувик, откройте его ActionScript-окно и скопируйте в него следующий скрипт:

onClipEvent(load){
    loadMovieNum("sound.swf",1);
}
onClipEvent(enterFrame){
    percentloaded=Math.floor(_level1.getBytesLoaded() // <- это должно быть
                  /_level1.getBytesTotal()*100);      // <- одной строкой
    percentdisplay=percentloaded + "%";
    if(percentloaded == 100 && !initialized){
        _level1.mysound();
        initialized=true;
        _visible=false;
    }
}

Когда воспроизведение клипа достигнет этого мувика, он начнет грузить файл с именем "sound.swf" на первый уровень (_level1) клипа или любой другой уровень, который будет указан вами. Затем, в покадровом цикле (onСlipEvent(enterFrame)) определяется размер загруженной части в процентах. Если клип полностью загрузился и функция mysound() не вызывалась прежде, происходит ее вызов на основной линейке первого уровня (_level1), выставляется флаг в виде булевой переменной (initialized=true) и мувик становится невидимым.

Теперь, если вы хотите показывать внутри этого мувиклипа процент его загрузки, создайте текстовое поле, откройте панель "Text Options", задайте текстовому полю динамический тип и имя "percentdisplay". Если же не хотите отображать процентовку, удалите строку:

percentdisplay=percentloaded + "%"

Аналогично можно отображать не проценты, а количество загруженных байтов, добавляя соответствующий код внутрь обработчика onClipEvent(enterFrame). Также внутри этого мувиклипа можно создать какую-нибудь анимацию, воспроизводимую в процессе загрузки файла sound.swf и которую легко можно прекратить, обнулив _visiblity свойство этого мувика.

_visible=false

Теперь у вас есть возможность подгружать звук как и когда хотите!

Некоторые жалуются, что звук не подгружается никуда, кроме как на основную линейку клипа (_level0). Звуковой объект (new Sound()) имеет факультативный параметр, определяющий линейку, на которую он будет подгружаться. Эта линейка может быть мувиклипом, находиться на другом уровне или в корне (_root) клипа:

mysoundobj=new Sound(_root)

Если не указывать этот параметр, то по умолчанию звуковой объект будет создан в корне клипа (_level0). Именно поэтому в скрипте и используется параметр "this", в этом случае звуковой объект будет создан на той линейке, на которой выполняется этот скрипт.


Дизайн студия "Eviant Studio". 2000-2002



Rambler's Top100
Rambler's Top100 Рейтинг@Mail.ru
Хостинг от uCoz