2012-09-07 36 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