Как упоминали @Taurayi и @Grant, изменение фокуса было бы проще.
Вот более грязный способ сделать то же самое:
slider.addEventListener(FocusEvent.FOCUS_IN, onFocus);
function onFocus(event:FocusEvent):void {
stage.focus = null;
}
Хотя slider.focusEnabled = false;
намного проще.
Вот еще более грязный способ:
import flash.sampler.getMemberNames;
removeKeyboardListeners(slider);
function removeKeyboardListeners(dispatcher:EventDispatcher):void{
var members:Object=getMemberNames(dispatcher);
for each (var name:QName in members) {
if (name.localName=="listeners") {
var numListeners:int = dispatcher[name].length;
for(var i:int = 0 ; i < numListeners ; i++){
try{
try{
if(dispatcher[name][i]){
dispatcher.removeEventListener(KeyboardEvent.KEY_DOWN,dispatcher[name][i]);
dispatcher.removeEventListener(KeyboardEvent.KEY_UP,dispatcher[name][i]);
}
}catch(e:Error){trace(e.message);}
}catch(e:ReferenceError){}
}
}
}
}
И если вы хотите длинный, но менее грязный способ, просто создайте подкласс fl.controls.Slider и установите его в качестве класса для Slider.символ в вашей библиотеке.В вашем подклассе вы бы добавили:
override protected function keyDownHandler(event:KeyboardEvent):void {}
keyDownHandler наследуется от fl.core.UIComponent, а в Slider.as он обрабатывает обновления клавиатуры.
HTH