用户交互的基础知识Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本 应用程序可使用 ActionScript 3.0 来创建交互性以响应用户活动。请注意,本节假定您已熟悉了 ActionScript 3.0 事件模型。有关详细信息,请参阅处理事件。 捕获用户输入用户交互(无论是通过键盘、鼠标、摄像头还是这些设备的组合)是交互性的基础。在 ActionScript 3.0 中,识别和响应用户交互主要涉及事件侦听。 InteractiveObject 类是 DisplayObject 类的一个子类,它提供了处理用户交互所需的事件和功能的通用结构。您无法直接创建 InteractiveObject 类的实例。而是由显示对象(如 SimpleButton、Sprite、TextField 以及各种 Flash 创作工具和 Flex 组件)从此类中继承其用户交互模型,因而它们共享同一个通用结构。这意味着,您为处理从 InteractiveObject 派生的一个对象中的用户交互而编写的代码以及学会的方法适用于所有其他对象。 重要概念和术语在继续阅读本章内容之前,一定要先熟悉以下重要的用户交互术语:
管理焦点交互式对象可以按编程方式或通过用户动作来获得焦点。另外,如果将 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); } 了解输入类型Flash Player 10.1 和 Adobe AIR 2 版本引入了测试运行时环境是否支持特定输入类型的功能。您可以使用 ActionScript 测试设备当前是否部署了运行时:
输入发现 ActionScript API 包括:
通过输入发现 API,您可以利用用户的设备功能,或在这些功能不可用时提供备用功能。这些 API 对于开发移动应用程序和启用触摸的应用程序特别有用。例如,如果您的移动设备的界面带有用于笔针的小按钮,则可以为使用手指触摸进行输入的用户提供带有较大按钮的替代界面。以下代码用于如下应用程序:具有 createStylusUI() 函数,该函数可分配一组适合笔针交互的用户界面元素。另一个函数称为 createTouchUI(),可分配另一组适合手指交互的用户界面元素: if(Capabilities.touchscreenType == TouchscreenType.STYLUS ){ //Construct the user interface using small buttons for a stylus //and allow more screen space for other visual content createStylusUI(); } else if(Capabilities.touchscreenType = TouchscreenType.FINGER){ //Construct the user interface using larger buttons //to capture a larger point of contact with the device createTouchUI(); } 为不同的输入环境开发应用程序时,考虑如下兼容性图表:
注: 不同的设备平台可以支持输入类型的多种组合。使用此图表作为常规指南。
|
|