패키지fl.managers
클래스public class FocusManager
상속FocusManager Inheritance Object
구현 IFocusManager

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

FocusManager 클래스는 tab loop와 같이 마우스 또는 키보드로 탐색되는 구성 요소의 집합에 대한 포커스를 관리합니다.

탭 루프는 보통 Tab 키를 사용하여 탐색합니다. 탭 루프에서는 구성 요소 간에 포커스가 원형 패턴으로 포커스가 있는 첫 번째 요소에서 마지막 요소로 이동한 다음 다시 마지막 요소에서 첫 번째 요소로 이동합니다. 탭 루프에는 컨테이너의 모든 구성 요소 및 탭 구성 요소가 포함됩니다. 하나의 응용 프로그램에 여러 탭 루프가 포함될 수 있습니다.

FocusManager 인스턴스는 단일 탭 루프를 처리합니다. 주 응용 프로그램은 항상 최소한 하나의 FocusManager 인스턴스와 연결되어 있지만, 응용 프로그램에서는 다른 FocusManager 인스턴스를 사용하여 포함된 각 탭 루프를 관리합니다. 응용 프로그램에 구성 요소의 탭 루프가 하나 이상 별도로 포함된 팝업 창이 있는 경우 등에는 FocusManager 인스턴스가 추가로 필요할 수 있습니다.

FocusManager 인스턴스에서 관리할 수 있는 모든 구성 요소는 fl.managers.IFocusManagerComponent 인터페이스를 구현해야 합니다. Flash Player에서 포커스를 관리하는 객체는 IFocusManagerComponent 인터페이스를 구현하지 않아도 됩니다.

FocusManager 클래스는 기본 버튼의 구현 방식도 관리합니다. 해당 시점에 포커스가 있는 위치에 따라 양식에서 Enter 키를 누르면 기본 버튼에서 click 이벤트를 전달합니다. 텍스트 영역에 포커스가 있거나 ComboBox 또는 NumericStepper 구성 요소 등의 구성 요소에서 값을 편집하는 중이더라도 기본 버튼에서는 click 이벤트를 전달하지 않습니다.

예제 보기

참고 사항

IFocusManager
IFocusManagerComponent


Public 속성
 속성다음에 의해 정의됨
 Inheritedconstructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다.
Object
  defaultButton : Button
현재 기본 버튼을 가져오거나 설정합니다.
FocusManager
  defaultButtonEnabled : Boolean
기본 버튼의 활성 여부를 나타내는 값을 가져오거나 설정합니다.
FocusManager
  nextTabIndex : int
[읽기 전용] 이 탭 루프에서 사용할 다음 고유 탭 인덱스를 가져옵니다.
FocusManager
 Inheritedprototype : Object
[정적] 클래스 또는 함수 객체의 프로토타입 객체에 대한 참조입니다.
Object
  showFocusIndicator : Boolean
포커스가 있는 구성 요소에 포커스의 시각적 표시기를 표시할지 여부를 나타내는 값을 가져오거나 설정합니다.
FocusManager
Public 메서드
 메서드다음에 의해 정의됨
  
새 FocusManager 인스턴스를 만듭니다.
FocusManager
  
FocusManager 인스턴스를 활성화합니다.
FocusManager
  
FocusManager를 비활성화합니다.
FocusManager
  
지정된 객체를 포함하는 대화형 객체를 검색합니다.
FocusManager
  
현재 포커스가 있는 대화형 객체를 가져옵니다.
FocusManager
  
사용자가 Tab 키를 눌러 다음 객체를 탐색할 때 포커스를 받을 수 있는 대화형 객체를 검색합니다.
FocusManager
 Inherited
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다.
Object
  
showFocusIndicator 값을 false로 설정하고 객체에 포커스가 있는 경우 시각적 포커스 표시기를 제거합니다.
FocusManager
 Inherited
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다.
Object
 Inherited
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다.
Object
  
IFocusManagerComponent 구성 요소로 포커스를 설정합니다.
FocusManager
 Inherited
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다.
Object
  
showFocusIndicator 값을 true로 설정하고 객체에 포커스가 있는 경우 시각적 포커스가 표시기를 그립니다.
FocusManager
 Inherited
지정된 객체의 문자열 표현을 반환합니다.
Object
 Inherited
지정된 객체의 프리미티브 값을 반환합니다.
Object
속성 정보
defaultButton속성
defaultButton:Button  [읽기/쓰기]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

현재 기본 버튼을 가져오거나 설정합니다.

기본 버튼은 해당 시점에 포커스가 있는 위치에 따라 Enter 키를 누르면 click 이벤트를 전달하는 양식에 있는 버튼입니다.



구현
    public function get defaultButton():Button
    public function set defaultButton(value:Button):void
defaultButtonEnabled속성 
defaultButtonEnabled:Boolean  [읽기/쓰기]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

기본 버튼의 활성 여부를 나타내는 값을 가져오거나 설정합니다. 이 값을 true로 설정하면 포커스 관리자가 Enter 키를 모니터링하여 Button 구성 요소가 아닌 구성 요소에 포커스가 있을 때 Enter 키를 누를 경우 기본 버튼에 대해 click 이벤트를 전달합니다. 이 값을 false로 설정하면 포커스 관리자가 Enter 키를 모니터링하지 않습니다. Enter 키를 사용하는 구성 요소는 이 속성을 false로 설정하여 사용자가 Enter 키를 누를 때 click 이벤트가 기본 버튼에 대해 전달되지 않도록 합니다.



구현
    public function get defaultButtonEnabled():Boolean
    public function set defaultButtonEnabled(value:Boolean):void
nextTabIndex속성 
nextTabIndex:int  [읽기 전용]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

이 탭 루프에서 사용할 다음 고유 탭 인덱스를 가져옵니다.



구현
    public function get nextTabIndex():int
showFocusIndicator속성 
showFocusIndicator:Boolean  [읽기/쓰기]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

포커스가 있는 구성 요소에 포커스의 시각적 표시기를 표시할지 여부를 나타내는 값을 가져오거나 설정합니다.



구현
    public function get showFocusIndicator():Boolean
    public function set showFocusIndicator(value:Boolean):void
생성자 정보
FocusManager()생성자
public function FocusManager(container:DisplayObjectContainer)

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

새 FocusManager 인스턴스를 만듭니다.

포커스 관리자가 DisplayObjectContainer 객체의 자식 내에서 포커스를 관리합니다.

매개 변수
container:DisplayObjectContainer — 포커스 관리자를 호스팅하는 DisplayObjectContainer 또는 stage입니다.
메서드 정보
activate()메서드
public function activate():void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

FocusManager 인스턴스를 활성화합니다.

FocusManager 인스턴스가 포커스 관련 키보드 및 마우스 작업을 모니터링할 수 있도록 하는 이벤트 핸들러를 추가합니다.

deactivate()메서드 
public function deactivate():void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

FocusManager를 비활성화합니다.

FocusManager가 포커스 관련 키보드 및 마우스 작업을 모니터링할 수 있도록 하는 이벤트 핸들러를 제거합니다.

findFocusManagerComponent()메서드 
public function findFocusManagerComponent(component:InteractiveObject):InteractiveObject

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

지정된 객체를 포함하는 대화형 객체를 검색합니다. Flash Player가 포커스를 Flash 구성 요소의 하위 구성 요소로 설정할 수 있기 때문에 이 메서드는 구성 요소를 기준으로 포커스가 있는 대화형 객체를 결정합니다.

매개 변수

component:InteractiveObject — Flash Player 레벨 포커스를 받을 수 있는 객체입니다.

반환값
InteractiveObjectcomponent를 포함하는 객체이거나 해당 객체가 없으면 component 자체입니다.
getFocus()메서드 
public function getFocus():InteractiveObject

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

현재 포커스가 있는 대화형 객체를 가져옵니다. Stage 객체를 사용하는 대신 이 메서드를 호출하여 포커스가 있는 구성 요소를 나타내는 것이 좋습니다. Stage는 해당 구성 요소의 하위 구성 요소를 반환할 수 있습니다.

반환값
InteractiveObject — 현재 포커스가 있는 대화형 객체입니다.
getNextFocusManagerComponent()메서드 
public function getNextFocusManagerComponent(backward:Boolean = false):InteractiveObject

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

사용자가 Tab 키를 눌러 다음 객체를 탐색할 때 포커스를 받을 수 있는 대화형 객체를 검색합니다. 이 메서드는 응용 프로그램에 유효한 다른 객체가 없으면 현재 포커스가 있는 객체를 반환합니다.

매개 변수

backward:Boolean (default = false) — 이 매개 변수를 true로 설정하면 포커스가 뒤로 이동하여 이 메서드가 Shift+Tab 키 조합을 누를 때 다음 번에 포커스를 받을 객체를 검색합니다.

반환값
InteractiveObject — 포커스를 받을 다음 구성 요소입니다.
hideFocus()메서드 
public function hideFocus():void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

showFocusIndicator 값을 false로 설정하고 객체에 포커스가 있는 경우 시각적 포커스 표시기를 제거합니다.

setFocus()메서드 
public function setFocus(component:InteractiveObject):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

IFocusManagerComponent 구성 요소로 포커스를 설정합니다. 이 메서드는 구성 요소의 가시성, 활성화 상태 또는 기타 조건을 확인하지 않습니다.

매개 변수

component:InteractiveObject — 포커스를 받을 수 있는 객체입니다.

showFocus()메서드 
public function showFocus():void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

showFocusIndicator 값을 true로 설정하고 객체에 포커스가 있는 경우 시각적 포커스 표시기를 그립니다.

예제 예제 사용 방법
FocusManagerExample.as

다음 예제에서는 FocusManager 클래스를 사용하여 스테이지에서 구성 요소 간에 포커스를 변경하는 방법을 보여 줍니다.

예제를 실행하려면 다음 단계를 수행합니다.

  1. 라이브러리에 TextInput 구성 요소를 추가합니다.
  2. 이 코드를 FLA 파일과 같은 디렉토리에 FocusManagerExample.as로 저장합니다.
  3. FLA 파일의 Document 클래스를 FocusManagerExample로 설정합니다.
package
{
    import fl.controls.TextInput;
    import fl.managers.FocusManager;
    import flash.display.InteractiveObject;
    import flash.display.Sprite;
    import flash.events.*;
    import flash.utils.Timer;

    public class FocusManagerExample extends Sprite 
    {
        private var fm:FocusManager;
        
        public function FocusManagerExample() {
            buildGridOfTextInputs();

            fm = new FocusManager(this);
            var t:Timer = new Timer(1000);
            t.addEventListener(TimerEvent.TIMER,secondPassed);
            t.start();
        }
        private function buildGridOfTextInputs():void {
            var rowSpacing:uint = 30;
            var colSpacing:uint = 110;
            var totalRows:uint = 4;
            var totalCols:uint = 3;
            var i:uint;
            
            for(i = 0; i < totalRows * totalCols; i++) {
                var ti:TextInput = new TextInput()
                ti.name = "component"+i.toString();
                ti.addEventListener(FocusEvent.FOCUS_IN,focusChange);
                ti.setSize(100,20);
                ti.x = 10 + ((i % totalCols) * colSpacing);
                ti.y = 10 + (Math.floor(i / totalCols) * rowSpacing);
                ti.tabEnabled = true;
                addChild(ti);
            }
        }
        private function secondPassed(e:TimerEvent):void {
            var nextComponent:InteractiveObject = fm.getNextFocusManagerComponent();
            fm.setFocus(nextComponent);    
        }
        
        private function focusChange(e:FocusEvent):void {
            trace("Focus change: " + e.target.name);
        }
    }
}