2013-05-06 54 views
0

我正在创建简单的音乐播放器。它只会播放一首歌曲。我想创建一个非常简单的seekbar。我希望一个图形作为查找组件工作 - 因此它可以移动到右侧和左侧(x轴上的两个点之间:图形现在的起始点,以及当歌曲结束时的结束点)并对应于歌曲的channel.position。所以要总结一下:我想问一个善良的灵魂,让我知道应该用什么代码来使x轴上的图形移动与歌曲的channel.position相对应。如何在ActionScript 3.0中为音乐播放器创建自定义搜索栏

这是我到目前为止的代码:

movieClip_1.stop(); 
var itsstoped:Boolean; 
var youpausedit:Boolean; 
var counter:Timer = new Timer(100); 
var chan:SoundChannel; 
var song:Sound = new Sound(); 
song.load(new URLRequest("wmc2.mp3")); 
song.addEventListener(Event.COMPLETE, soundloaded); 
function soundloaded(event:Event) 
{ 
trace("Song has been loaded."); 
} 
counter.addEventListener(TimerEvent.TIMER,countcounter); 
itsstoped = true; 
youpausedit = false; 
button_2.addEventListener(MouseEvent.CLICK, presser); 
function presser(event:MouseEvent):void 
{ 
if(itsstoped == true && youpausedit == true) 
{ 
    movieClip_1.gotoAndPlay(1); 
    chan = song.play(chan.position); 
    itsstoped = false; 
} 
else if(itsstoped == false) 
{ 
    movieClip_1.gotoAndStop(1); 
    chan.stop(); 
    itsstoped = true; 
    youpausedit = true; 
} 
else if(itsstoped == true && youpausedit == false) 
{ 
    movieClip_1.gotoAndPlay(1); 
    chan = song.play(); 
    counter.start(); 
    itsstoped = false; 
} 
} 
function countcounter(e:TimerEvent):void 
{ 
trace(chan.position/song.length); 
var percentage:uint = 100 * (chan.position/song.length); 
trace(percentage); 
if(percentage == 100) 
{ movieClip_1.gotoAndStop(1); 
    itsstoped = true; 
    youpausedit = false; 
    } 
} 

忽略movieClip_1因为它只是运行播放音乐时的动画。

回答

0

类似的东西:

addEventListener(Event.ENTER_FRAME,onEFrame); 

function onEFrame(e:Event):void 
{ 
    graphic.x = graphicStartX + music.position/music.length*(graphicEndX-graphicStartX); 
} 
+0

谢谢你的时间和答案。我会尝试一下,但是用户拖放操作的代码是否应该将该图形更改为按钮? – aya9 2013-05-06 10:02:14

+0

我已经试过你的代码,它的工作原理,但给我: – aya9 2013-05-06 22:30:50

+0

我试过你的代码,它的工作原理,但给我三个输出窗口中:TypeError:错误#1009:无法访问空对象引用的属性或方法。那是因为我的时间线只有一帧?任何其他事件,我可以“听”而不是ENTER_FRAME,不会得到这个错误?此外,如果你可以涉及我以前的问题,我会很多apriciate。 @SzRaPnEL – aya9 2013-05-06 22:38:41

0

问题在这行代码奠定:

var chan:SoundChannel; 

我已经把它改为:

var chan = new SoundChannel(); 

和错误#1009不再展示。

万岁! :)