我创造了一个带滑动音量控制的小型音乐播放器。我的音量有问题。虽然它可以正确控制音量,但如果我将初始音量设置为小于100%,则音量始终从100%开始,直到我将鼠标移到播放器上。此时,音量将更改为初始音量设置为的任何值。
这是一个flash bug,还是我错过了什么?
以下是受影响的代码(为简洁省略了其他按钮/功能的代码):
var song_initvolume:Number = 100;
slider_1._x = groove_1._x + song_initvolume;
playSong(0,song_play);
slider_1.onPress = function() {
this.startDrag(true, groove_1._x, groove_1._y, groove_1._x + 96, groove_1._y);
}
slider_1.onRelease = function() {
this.stopDrag();
}
slider_1.onMouseMove = function(){
newPoint = new Object();
newPoint.x = this._x;
newPoint.y = this._y;
groove_1.globalToLocal(newPoint);
mySound_sound.setVolume(-1 * newPoint.x);
}
function playSong(songNum,songPlay,reset_Pos){
if(reset_Pos){
mySound_sound = new Sound();
}
var myTitle = mySongs_array[songNum].TITLE;
trace("Playing TITLE= " + myTitle);
var myArtist = mySongs_array[songNum].ARTIST;
trace("Playing ARTIST= " + myArtist);
var myURL = mySongs_array[songNum].URL;
trace("Playing URL= " + myURL);
title_txt.text = mySongs_array[songNum].TITLE;
artist_txt.text = mySongs_array[songNum].ARTIST;
mySound_sound.loadSound(myURL,songPlay);
// start oncomplete
mySound_sound.onSoundComplete = function() {
song_pos = 0;
reset_Pos = true;
if(song_continuous){
song_play = true;
current_song++;
if (current_song>=my_total){
current_song=0;
if(song_loop){
song_play = true;
} else {
song_play = false;
}
}
} else {
song_play = false;
}
playSong(current_song,song_play,reset_Pos);
}
// end oncomplete
}
我希望能够将音量设置为50%,但每次都会出现上述行为。
非常感谢任何想法。
答案 0 :(得分:1)
您需要使用初始值调用mySound_sound.setVolume()。现在你只进入onMouseMove处理程序。
答案 1 :(得分:1)
使用此代码修复:
mySound_sound.onLoad = function(){
mySound_sound.setVolume(-1 * song_volume);
}
现在很棒!