交互式对象可以按编程方式或通过用户动作来获得焦点。另外,如果将
tabEnabled
属性设置为
true
,用户可通过按 Tab 将焦点从一个对象传递到另一个对象。请注意,默认情况下,
tabEnabled
值为
false
,但以下情况除外:
在上述各种情况下,都可以为
FocusEvent.FOCUS_IN
或
FocusEvent.FOCUS_OUT
添加侦听器,以便在焦点更改时提供其他行为。这对文本字段和表单尤其有用,但也可以用于 sprite、影片剪辑或从 InteractiveObject 类进行继承的任何对象。下面的示例说明了如何使用 Tab 键启用焦点循环切换,以及如何响应后续的焦点事件。在本例中,每个正方形在收到焦点时将改变颜色。
注:
Flash Professional 使用键盘快捷键来管理焦点;因此,若要正确模拟焦点管理,应在浏览器或 AIR 中测试 SWF 文件,而不是在 Flash 中进行测试。
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);
}