 
         _track.addEventListener(MouseEvent.CLICK, handleTrackClick);
         _knob.addEventListener(MouseEvent.MOUSE_DOWN, handleKnobDown);
-        _knob.addEventListener(MouseEvent.MOUSE_UP, handleKnobUp);
     }
 
     /**

import flash.display.Shape;
import flash.display.Sprite;

import flash.events.MouseEvent;

import flash.geom.Point;

import com.threerings.util.Log;
import com.threerings.util.ValueEvent;

    {
        // TODO.. maybe just redispatch
        log.warning("player error: " + event.value);
    }

    protected function adjustSeek (trackX :Number) :void
    {
        // see if we can seek to a position
        const dur :Number = _player.getDuration();
        if (isNaN(dur)) {
            log.debug("Duration is NaN, not seeking.");
            return;
        }
        if (trackX == _lastKnobX) {
            return;
        }
        _lastKnobX = trackX;
        var perc :Number = trackX / TRACK_WIDTH;
        perc = Math.max(0, Math.min(1, perc));
        log.debug("Seek", "x", trackX, "perc", perc, "pos", (perc * dur));
        _player.seek(perc * dur);
    }

    protected function showHUD (show :Boolean) :void
