互動物件可以透過程式設計或是使用者動作來接收焦點。此外,如果將
tabEnabled
屬性設為
true
,當使用者按下 Tab 鍵後,焦點會從舊的物件轉移到新的物件上。請注意,除了下列情況以外,
tabEnabled
的值預設都是
false
:
針對上述每一種情況,您都可以為
FocusEvent.FOCUS_IN
或
FocusEvent.FOCUS_OUT
加入偵聽程式,以提供焦點變更時的其它行為。這種方式特別適用於文字欄位和表單,但也可以用於本身是 InteractiveObject 類別之子類別的 Sprite、影片片段或任何物件。下列範例將說明如何透過 Tab 鍵來啟用焦點循環,以及如何回應後續的焦點事件。在此情況中,每個正方形都會隨著所收到的焦點而變更顏色。
備註:
Flash Professional 運用了鍵盤快速鍵來管理焦點;因此,為了適當地模擬焦點管理,您應該在瀏覽器或 AIR 中 (不要使用 Flash) 測試 SWF 檔。
var rows:uint = 10;
var cols:uint = 10;
var rowSpacing:uint = 25;
var colSpacing:uint = 25;
var i:uint;
var j:uint;
for (i = 0; i < rows; i++)
{
for (j = 0; j < cols; j++)
{
createSquare(j * colSpacing, i * rowSpacing, (i * cols) + j);
}
}
function createSquare(startX:Number, startY:Number, tabNumber:uint):void
{
var square:Sprite = new Sprite();
square.graphics.beginFill(0x000000);
square.graphics.drawRect(0, 0, colSpacing, rowSpacing);
square.graphics.endFill();
square.x = startX;
square.y = startY;
square.tabEnabled = true;
square.tabIndex = tabNumber;
square.addEventListener(FocusEvent.FOCUS_IN, changeColor);
addChild(square);
}
function changeColor(event:FocusEvent):void
{
event.target.transform.colorTransform = getRandomColor();
}
function getRandomColor():ColorTransform
{
// Generate random values for the red, green, and blue color channels.
var red:Number = (Math.random() * 512) - 255;
var green:Number = (Math.random() * 512) - 255;
var blue:Number = (Math.random() * 512) - 255;
// Create and return a ColorTransform object with the random colors.
return new ColorTransform(1, 1, 1, 1, red, green, blue, 0);
}