- 寫給大家看的安卓應用開發書:App Inventor 2快速入門與實戰
- (美)沃爾貝等
- 2118字
- 2020-01-10 15:25:30
1.5 為組件添加行為
此前我們已經為應用添加了按鈕、標簽及音效播放器組件,但它們只是構成應用的“硬件”。現在我們來為這些“硬件”編寫必要的“軟件”。首先,當觸摸按鈕時,讓應用發出貓叫聲。這些工作需要在編程視圖中完成,點擊設計視圖右上角的“編程”按鈕,切換到編程視圖。
留心觀察編程視圖,這里將是你向組件下達指令的地方,讓它們做什么,何時做,都將在這里實現。眼下,你將命令貓咪按鈕,在被觸碰(點擊)時,發出貓叫聲。如果把組件比作菜譜的食材,那么即將使用的代碼塊就是烹調一道菜的具體步驟。
1.5.1 讓貓發出叫聲
在編程視圖窗口的左側、“代碼塊”標題下面,你可以看到三個大的代碼塊分組:內置塊、Screen1以及任意組件。其中Screen1分組中列出了這個應用中的全部組件:按鈕1、標簽1以及音效播放器1。點擊其中任何一個組件的名稱,將打開該組件的代碼塊抽屜,你將看到一組隸屬于該組件的可選代碼塊。點擊按鈕1,打開按鈕1的代碼塊抽屜,將看到與按鈕1有關的代碼塊,可以用它們來設置按鈕的行為。最上面的代碼塊是“當按鈕1被點擊時”,如圖1-9所示。

圖1-9 點擊按鈕1顯示該組件的代碼塊
點擊代碼塊“當按鈕1被點擊時”,代碼塊將落在工作區內。注意代碼塊上的文字“當”,那些包含了“當”字的黃色的代碼塊被稱為“事件處理程序”,用來定義某個特定事件發生時,應用中組件的行為。在這個例子中,我們感興趣的事件發生在用戶點擊貓咪圖片時(實際上點擊的是按鈕),如圖1-10所示。接下來,我們將在這個程序中添加一些塊,來響應這個點擊事件。

圖1-10 在事件處理程序中設置對點擊事件的響應
點擊“音效播放器1”打開代碼塊抽屜,找到并拖出“讓音效播放器1播放”塊。(記得嗎,我們之前將音效播放器1的源文件屬性設置為加載到項目中的文件meow.mp3。)此時,你可能已經注意到,“讓音效播放器1播放”塊在外形上剛好與按鈕1的點擊事件塊相吻合。這是App Inventor的特別設計,以便只有那些相匹配的塊才能連接到一起。在這個例子中,包含“讓”字的塊用來引發組件的行為,與點擊事件塊連接到一起,共同構成一個整體。如圖1-11所示,當兩個塊連接到一起時,會發出一個清脆的“咔噠”聲。

圖1-11 這時如果點擊按鈕,將發出貓叫聲
不同于傳統的程序代碼(通常像混亂的“天書”一般),在App Inventor中,使用事件響應塊,以一種簡單明了的方式拼出組件的行為。在本例中,我們相當于直接說:“嘿,App Inventor,當有人點擊貓咪按鈕時,播放貓叫聲。”
測試:檢查一下,確保一切運行正常。每當為應用添加了新的功能,就要及時進行測試,這一點非常重要。在測試設備上點擊按鈕(或在模擬器上單擊它),你應該聽到貓叫聲。恭喜你,你的第一個應用運行起來了!
1.5.2 添加振動效果
當點擊按鈕時,讓貓咪發出叫聲,同時產生振動效果,這要借助于手機的振動功能來實現。這聽起來很難,其實非常容易,因為用來播放貓叫聲音的音效播放器組件也可以使設備產生振動。App Inventor可以幫助你挖掘設備的核心功能,而無需考慮這些功能(如振動)是如何實現的。現在,不必在設計視圖中做任何改動,只需在編程視圖中,向按鈕點擊事件塊中添加另一個功能。
(1)在編程視圖中,單擊音效播放器1,打開其代碼塊抽屜。
(2)選擇“讓音效播放器1振動”塊,將其拖動到“當按鈕1被點擊”塊中,置于“讓音效播放器1播放”塊下方,恰好與原來的塊吻合,如圖1-12所示。如果不吻合,可嘗試拖動它,使振動塊頂部的凹陷恰好與播放塊底部的凸起相對。

圖1-12 在按鈕點擊事件中播放聲音并產生振動
(3)注意:在“讓音效播放器1振動”塊的右下角寫著“參數:毫秒數”字樣,并且旁邊還有一個開放的插槽。這種開放的插槽表示需要填入其他塊,來設定行為的具體方式。本例中,開放插槽用于設定振動的時長——毫秒數。毫秒是多數編程語言中慣用的時間單位,1秒=1000毫秒。如果想讓設備振動半秒鐘,需要輸入數字塊“500”。打開內置塊分組中的數學抽屜,會看到一列藍色的代碼塊,如圖1-13所示。

圖1-13 打開數學塊抽屜
(4)在數學塊列表頂部,是數字塊“0”。拖出該塊,可以將0改寫為需要的數字,如圖1-14所示。

圖1-14 選擇數字塊0(0為數字塊的默認值)
(5)選中數字0,并輸入新的值500,如圖1-15所示。

圖1-15 將數值改寫為500
(6)將數字塊500拖到振動塊的開放插槽中,如圖1-16所示。

圖1-16 將數字塊500拖入毫秒數插槽
測試:試試看,點擊設備上的按鈕,你會感覺到半秒鐘的振動。
1.5.3 搖晃設備
現在繼續挖掘安卓設備的特色,為應用添加最后一項功能:搖晃設備時發出貓叫聲。為此要用到加速度傳感器組件,它可以檢測到設備的搖晃或移動。
(1)在設計視圖中,展開組件面板中的傳感器分組,將加速度傳感器組件拖入到預覽窗口中。不必介意把它放在什么位置,因為像任何非可視組件一樣,無論放在哪兒,它最終都會落到工作區域底部的“非可視組件”區。
(2)搖晃設備的事件需要與單擊按鈕事件分開處理。這意味著需要一個新的事件處理程序。進入編程視圖,發現在代碼塊的Screen1分組中增加了一個加速度傳感器1組件。打開其代碼塊抽屜,拖出“當加速度傳感器1被晃動時”塊(代碼塊抽屜中的第二個塊)。
(3)像點擊按鈕時播放聲音一樣,將“讓音效播放器1播放”塊放在搖晃事件塊的缺口中,搖動設備試試看。
圖1-17中顯示了完整的“你好貓咪”應用中的所用代碼塊。

圖1-17 應用中的全部代碼塊