FocusManager ile çalışma

Kullanıcı Flash uygulamasında Sekme tuşuna bastığında veya uygulamada herhangi bir yeri tıklattığında, FocusManager sınıfı hangi bileşenin girdi odağını alacağını belirler. Bir bileşen oluşturmuyorsanız FocusManager öğesini etkinleştirmek için uygulamaya FocusManager örneğini eklemenize veya herhangi bir kod yazmanıza gerek yoktur.

Bir RadioButton nesnesi odak alırsa, FocusManager öğesi, o nesneyi veya aynı groupName değerine sahip tüm nesneleri inceler ve selected özelliği true değerine ayarlanmış şekilde nesnede odağı ayarlar.

Her kalıcı Window bileşeni bir FocusManager örneği içerir, böylece o penceredeki denetimler de bu örneğin kendi sekme kümesi olur. Böylece kullanıcının Sekme tuşuna basarak yanlışlıkla diğer pencerelerdeki bileşenlere gitmesi önlenir.

FocusManager öğesi, varsayılan gezinme şeması veya sekme döngüsü olarak kaptaki öğelerin derinlik düzeyini (veya z sıralamasını) kullanır. Kullanıcılar tipik olarak Sekme tuşunu kullanarak sekme döngüsünde gezinir; bu durumda odak bulunduğu birinci bileşenden sonuncuya gider ve sonra tekrar birinciye geri gelir. Derinlik düzeyleri öncelikli olarak bileşenlerin Sahne Alanı'na sürüklendiği sıralamaya göre ayarlanır; ancak son z sıralamasını belirlemek için Değiştir > Yerleştir > En Öne Getir/En Alta Gönder komutlarını da kullanabilirsiniz. Derinlik düzeyleri hakkında daha fazla bilgi almak için bkz. Görüntüleme listesiyle çalışma .

Bir uygulamada bileşen örneğine odak vermek için setFocus() yöntemini çağırabilirsiniz. Örneğin, aşağıdaki örnek, geçerli kap ( this ) için bir FocusManager örneği oluşturur ve aButton Button örneğine odağı verir.

var fm:FocusManager = new FocusManager(this); 
fm.setFocus(aButton);

getFocus() yöntemini çağırarak hangi bileşenin odağa sahip olduğunu belirleyebilir ve getNextFocusManagerComponent() yöntemini çağırarak da bir sonraki defa sekme döngüsünde hangi bileşenin odağı alacağını belirleyebilirsiniz. Aşağıdaki örnekte, bir CheckBox, bir RadioButton ve bir Button Sahne Alanı'ndadır ve her bileşen MouseEvent.CLICK ve FocusEvent.MOUSE_FOCUS_CHANGE olayları için dinleyicilere sahiptir. MouseEvent.CLICK olayı gerçekleştiğinde, kullanıcı bileşeni tıklattığından, showFocus() işlevi bir sonraki defa sekme döngüsünde hangi bileşenin odağı alacağını belirlemek için getNextFocusManagerComponent() yöntemini çağırır. Daha sonra da o bileşene odağı vermek için setFocus() yöntemini çağırır. FocusEvent.MOUSE_FOCUS_CHANGE olayı gerçekleştiğinde, fc() işlevi bu olayın gerçekleştiği bileşenin adını görüntüler. Kullanıcı sekme döngüsünde sonraki bileşenden başka bir bileşeni tıklattığında bu olay tetiklenir.

// This example assumes a CheckBox (aCh), a RadioButton (aRb) and a Button 
// (aButton) have been placed on the Stage. 
 
import fl.managers.FocusManager; 
import flash.display.InteractiveObject; 
 
var fm:FocusManager = new FocusManager(this); 
 
aCh.addEventListener(MouseEvent.CLICK, showFocus); 
aRb.addEventListener(MouseEvent.CLICK, showFocus); 
aButton.addEventListener(MouseEvent.CLICK, showFocus); 
aCh.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, fc); 
aRb.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, fc); 
aButton.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, fc); 
 
function showFocus(event:MouseEvent):void { 
    var nextComponent:InteractiveObject = fm.getNextFocusManagerComponent(); 
    trace("Next component in tab loop is: " + nextComponent.name); 
    fm.setFocus(nextComponent);  
} 
 
function fc(fe:FocusEvent):void { 
    trace("Focus Change: " + fe.target.name); 
}

Kullanıcı Enter (Windows) veya Return (Macintosh) tuşuna bastığında odağı alan bir Button öğesi oluşturmak için, aşağıdaki kodda olduğu gibi, FocusManager.defaultButton özelliğini varsayılan Button olmasını istediğiniz Button örneğine ayarlayın:

import fl.managers.FocusManager; 
 
var fm:FocusManager = new FocusManager(this); 
fm.defaultButton = okButton;

FocusManager sınıfı varsayılan Flash Player odak dikdörtgenini geçersiz kılar ve yuvarlak köşeli bir özel odak dikdörtgeni çizer.

Flash uygulamasında bir odak şeması oluşturmayla ilgili daha fazla bilgi için, Adobe® Flash® Professional CS5 için ActionScript® 3.0 Başvurusu bölümündeki FocusManager class öğesine bakın. Özel bir odak yöneticisi oluşturmak için, IFocusManager arabirimini uygulayan bir sınıf oluşturmanız gerekir. Daha fazla bilgi için, Adobe® Flash® Professional CS5 için ActionScript® 3.0 Başvurusu bölümündeki IFocusManager öğesine bakın.