使用者互動的基本概念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 加入偵聽程式,以提供焦點變更時的其它行為。這種方式特別適用於文字欄位和表單,但也可以用於本身是 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); } 探索輸入類型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(); } 開發不同輸入環境的應用程式時,請考慮下列相容性圖表:
備註: 不同的裝置平台可以支援多種輸入類型的組合。此圖表可當成一般指南使用。
|
|