2010-11-08 75 views
0

我正在构建自定义音频播放器。整个事情驱动MediaPlayback组件。我有一个随着歌曲进程而移动的洗刷器。我希望能够点击并擦除它。目前我已设置为将playheadTime设置为等于拖动滑块的百分比距离乘以播放组件的总时间。在释放滑块后,我会追踪播放头时间,它似乎很好,但我无法让它继续播放。以下是控制器中的代码:Flash AS2:设置MediaPlayback组件的playheadTime

var totalDistance = bar_mc._width - slider_mc._width; 
var wasPlaying = false; 
this.onEnterFrame = function(){ 
    var tTime = this._parent._parent._parent.music_mp3.totalTime; 
    var cTime = this._parent._parent._parent.music_mp3.playheadTime; 
    var percDone = cTime/tTime; 
    slider_mc._x = percDone * totalDistance; 
} 
slider_mc.onPress = function(){ 
    wasPlaying = this._parent._parent._parent._parent.music_mp3.playing; 
    this._parent._parent._parent._parent.music_mp3.pause(); 
    this.startDrag(false,0,0,totalDistance,0); 
    delete this._parent.onEnterFrame; 
    this.onEnterFrame = function(){ 
      this._parent._parent._parent._parent.music_mp3.playheadTime = this._x/totalDistance * this._parent._parent._parent._parent.music_mp3.totalTime; 
    } 
} 
slider_mc.onRelease = slider_mc.onReleaseOutside = function(){ 
    this.stopDrag(); 
    if(wasPlaying){ 
      this._parent._parent._parent._parent.music_mp3.play(); 
      trace(this._parent._parent._parent._parent.music_mp3.playheadTime); 
    } 
    this._parent.onEnterFrame = function(){ 
      var tTime = this._parent._parent._parent._parent.music_mp3.totalTime; 
      var cTime = this._parent._parent._parent._parent.music_mp3.playheadTime; 
      var percDone = cTime/tTime; 
      slider_mc._x = percDone * totalDistance; 
    } 
} 

回答

0

哇,我很笨。我刚刚意识到我将播放时间设置为onEnterFrame中的当前位置。然后在onRelease中,我不删除那个引用,所以它只是不断地将播放头时间设置为拖动了Scrubber位置的点。

需要在slider_mc.onRelease中删除this.onEnterFrame。