1

ムービークリップで「フォーカス選択」をキャッチすることは可能ですか(TAB、ARROWS、ENTER、SPACEキーなどのアクセシビリティ機能のみを使用)?

次の例では、青い四角の「フォーカス選択」をキャッチする方法が見つかりません。助言がありますか?

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!");
}
4

1 に答える 1

2

フォーカスイベントを使ってみましたか?

FocusEvent.FOCUS_IN

ここに良いチュートリアルがあります: http ://www.kirupa.com/forum/showthread.php?311824-AS3-Simple-focus-example

矢印キーまたはスペースバーまたはEnterに関しては、キーリスナーを使用する必要があります。

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;

    }
}
于 2012-09-07T16:41:02.273 に答える