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.