2011-04-06 54 views

回答

2

简单,只需设置“focusEnabled”的“滑块”对象的公共属性设置为false:

import fl.controls.Slider; 

var slider:Slider = new Slider(); 
addChild(slider); 

slider.focusEnabled = false; 

这将表明,它在用户点击后“滑块”对象不能收到焦点因此不允许键盘与之交互。

+0

太棒了,谢谢 – mheavers 2011-04-07 19:53:56

0

地址:

stage.focus = stage; 

到SliderEvent.CHANGE处理

这将重心转移到舞台,因此在滑盖关闭键盘活动。

1

正如@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,并设置为类库中的滑块的象征。在子类中你可以这样:

override protected function keyDownHandler(event:KeyboardEvent):void {} 

keyDownHandler从fl.core.UIComponent继承和Slider.as它处理的键盘更新。

HTH