2012-09-07 32 views
1

是否有可能在动画片段上捕捉“焦点选择”(使用辅助功能,如TAB,ARROWS,ENTER和SPACE键)?as3如何捕捉焦点选择事件?

在下面的例子中,我找不到一种方法来捕捉蓝色方块上的“焦点选择”。有什么建议么?

import flash.display.SimpleButton; 
import flash.display.MovieClip; 
import flash.events.MouseEvent; 
import flash.events.Event; 
import flash.display.Sprite; 
import flash.events.FocusEvent; 

// build red button 
var btSprite:Sprite = new Sprite(); 
btSprite.graphics.beginFill(0xff0000); 
btSprite.graphics.drawRect(0,0,20,20); 
btSprite.graphics.endFill(); 
var redBtn:SimpleButton; 
redBtn = new SimpleButton(btSprite, btSprite, btSprite, btSprite); 
addChild(redBtn); 
redBtn.x = redBtn.y = 0; 

// build blue square 
var blueSquare:MovieClip = new MovieClip(); 
blueSquare.graphics.beginFill(0x0000ff); 
blueSquare.graphics.drawRect(0,0,20,20); 
blueSquare.graphics.endFill(); 
addChild(blueSquare); 
blueSquare.x = blueSquare.y = 100; // not sure it does not show over myBtn 

// set blue square selectable using TAB key 
blueSquare.tabEnabled = true; 
blueSquare.focusRect = true; 

// listen events 
redBtn.addEventListener(MouseEvent.CLICK, onEvent);   // work click/tab select 
blueSquare.addEventListener(Event.SELECT, onEvent);   // does not work 
blueSquare.addEventListener(MouseEvent.CLICK, onEvent);  // works click only 

// catch events on objects 
function onEvent(event:Event){ 
    trace((event.target?event.target.name:'none') + " selected!"); 
} 
+0

检查“blueSquare .mouseEnabled“是真实的,请尝试设置它并再次检查您的条件。 – Vesper

+0

需要更多的咖啡,完全看到了一个不存在的形状声明... – BadFeelingAboutThis

+0

您是否尝试过使用焦点事件? – BadFeelingAboutThis

回答

2

您是否尝试过使用焦点事件?

FocusEvent.FOCUS_IN 

这里是一个很好的教程: http://www.kirupa.com/forum/showthread.php?311824-AS3-Simple-focus-example

在问候箭头键或空格键或回车,你需要使用一个按键侦听器:

blueSquare.addEventListner(KeyboardEvent.KEY_DOWN, keyDownHandler); 

function keyDownHandler(event:KeyboardEvent):void { 
    switch(event.keyCode){ 
     case Keyboard.SPACE: 
     case Keyboard.ENTER: 
      //do your select 
      break; 

     case Keyboard.DOWN: 
      //do what you want when the down arrow is pressed 
      break; 

    } 
} 
+0

感谢您的回答,但我需要抓住选择,而不是焦点。由于“tabEnabled”设置为true,因此Focus alreay在此示例中起作用。 – Simmoniz

+0

然后您需要使用密钥侦听器。我更新了答案。 keyDownHandler只有在blueSquare有焦点时才会运行。 – BadFeelingAboutThis