Запустим итнервал, который будет просчитывать процент загрузки и проигрывания песни, а также заполнять текстовые поля CODE
setInterval(function (){
position = Math.round(sound.position/sound.duration*100);
loading = Math.round(sound.getBytesLoaded() / sound.getBytesTotal() * 100)
if (sound.getBytesLoaded() > 1) {
if(loading==100) {load_txt.text = "ok"} else {load_txt.text = loading + "%"}
play_txt.text = position + "%"
title_txt.text = track + 1 + ". " + sound.id3.TPE1 + " - " +sound.id3.TIT2
}
} , 100 )
Напишем обработчик, который запустит следующую или случайную песню в зависимости от того, включён ли режим случайного воспроизведения песен
CODE
sound.onSoundComplete = function () {
if (random_play==true) {press_key (random_btn)}
else {press_key (next_btn)}
}
Чтобы не писать одинаковые дейстия для всех кнопок и событий напишем общую функцию, которая будет воспроизводить звук при удачной загрузке, выведет сообщении если звук не начал загружаться.
CODE
function press_key(presskey) {
if (presskey==download_btn) {getURL(song[track])}
if (presskey==next_btn){if(track >= song.length-1){track=0} else {track=track+1}}
if (presskey==prev_btn){if(track <= 0){track = song.length-1} else {track=track-1}}
if (presskey==random_btn){track=randRange (0, song.length -1)}
if (presskey==stop_btn) {sound.stop(); song_is_play = false} else {
sound.stop()
sound.start()
pause_pos=0
song_is_play = true
sound.onLoad = function(success:Boolean) {
if (success) {} else {title_txt.text = "loading..."}
}
sound.loadSound(song[track], true)
sound.setVolume(volume_set)
}
}
Так как в AS 2.0 нет функции паузы звука то напишем функцию для кнопки pause которая будет запоминать позицию воспроизведения песни и потом начинать воспроизведение с того же места
CODE
pause_btn.onPress = function(){
if (song_is_play==true) {
pause_pos=sound.position/1000
sound.stop()
song_is_play=false
}
else {
sound.start(pause_pos)
song_is_play=true
pause_pos=0
}
}
Чтобы после нажатия pause кнопка play продолжала проигрывание, а после нажатия stop начинала заново напишем функцию и для неё
CODE
play_btn.onPress = function(){
if (pause_pos==0) {press_key (play_btn)}
else {sound.start(pause_pos)}
}
Напишем режим случайного воспроизведения звука с анимацией кнопки random. Чтобы всё было понятно для анимации я выбрал атрибут _alpha (прозрачность) принимающий значения 50 и 100.
CODE
random_play = false
over_key (random_gr)
random_btn.onPress = function(){
if (random_play==true) {
random_gr._alpha = 50
random_play=false
}
else {
random_play=true
random_gr._alpha = 100
}
}
Пропишем код для остальных кнопок, которые будут запускать общую функцию press_key
CODE
stop_btn.onPress = function(){press_key (stop_btn)}
prev_btn.onPress = function(){if(random_play==true) {press_key(random_btn)} else {press_key(prev_btn)}}
next_btn.onPress = function(){if(random_play==true) {press_key(random_btn)} else {press_key (next_btn)}}
download_btn.onPress = function(){press_key (download_btn)}
Следущий код я написал только из есттетических соображений, чтобы при наведении на кнопки происходила их анимация. При желании можете его убрать.
CODE
//функция наведения на клавишу
function over_key(overkey) {overkey._alpha = 50}
//функция отведения от клавиши
function out_key(outkey) {outkey._alpha = 100}
//наведение на кнопки
play_btn.onRollOver = function(){over_key(play_gr)}
pause_btn.onRollOver = function(){over_key(pause_gr)}
stop_btn.onRollOver = function(){over_key(stop_gr)}
prev_btn.onRollOver = function(){over_key(prev_gr)}
next_btn.onRollOver = function(){over_key(next_gr)}
download_btn.onRollOver = function(){over_key(download_gr)}
play_btn.onRollOut = function(){out_key(play_gr)}
pause_btn.onRollOut = function(){out_key(pause_gr)}
stop_btn.onRollOut = function(){out_key(stop_gr)}
prev_btn.onRollOut = function(){out_key(prev_gr)}
next_btn.onRollOut = function(){out_key(next_gr)}
download_btn.onRollOut = function(){out_key(download_gr)}