Тоже задавался этим вопросом, но так ответа в сети не нашел (может плохо искал, но по мне очень хорошо рыл), поэтому нарисовал свой метод (работает как в МПЦ и КМП):

Код AS1/AS2:
var FrameNumber: Number = new Number(5); // количество положений ползунка
var ShagFrame: Number;
ShagFrame=(Navigation.SampleSlider.track_mc._width-1)/(FrameNumber-1) //считаем шаг ползунка
Navigation.SampleSlider.polzun_mc.onPress = function(){
var framePlus:Number = new Number(Math.round(Navigation.SampleSlider.polzun_mc._x/ShagFrame)); // переменная для проверки перехода на новое значение, изначально ползунок установлен в первое значение.
//делаем ползуноковый регулятор SampleSlider: track_mc-линия по которой таскаем, polzun_mc- активный ползунок (делаем его прозрачным) и размещаем поверх Indikator (красивышный пассивный ползунок)
this.startDrag(false,Navigation.SampleSlider.track_mc._x,this._y,Navigation.SampleSlider.track_mc._width,this._y);
this.onEnterFrame = function () {
var frame = Math.round(Navigation.SampleSlider.polzun_mc._x/ShagFrame); //вычисляем новое целое значение положения (изначально 1)
if (framePlus!=frame) { //проверяем изменилось ли новое значение и если да ...
// впишем новое значение для проверочной переменной
Navigation.SampleSlider.Indikator._x=ShagFrame*frame; // двигаем на новое значение пассивный ползунок
trace (173+frame);//проверим на какой фрейм попадем (у меня то что надо) :))
gotoAndPlay(173+frame);
framePlus=frame;
}
}
}
Navigation.SampleSlider.polzun_mc.onRelease =Navigation.SampleSlider.polzun_mc.onReleaseOutside = function(){
Navigation.SampleSlider.polzun_mc._x=Navigation.SampleSlider.Indikator._x; // активный ползунок переместим на пассивный (он же прозрачный потом не найдем)
this.stopDrag(); //убираем отработанный материал
delete this.onEnterFrame;
}
Может быть топорно, но мне кажется красивое и простое решение.
Дописываем, обсуждаем.
и для поиска: Перемещение с шагом, ползунковый регулятор с шагом (step), дискретный слайдер, пошаговый регулятор, дискретное перемещение