摘要:手機是當今使用率很高的移動設備,開發(fā)手機游戲離不開交互響應。針對按鈕的交互介紹了兩種事件響應以及它們的區(qū)別,對如何實現(xiàn)按鈕的交互響應、如何實現(xiàn)表單按鈕的交互響應、不同的案例應采用何種交互方式進行了研究。
關鍵詞:手機游戲;事件響應;交互;綁定;接口
DOIDOI:10.11907/rjdk.151153
中圖分類號:TP302
文獻標識碼:A 文章編號:16727800(2015)006005902
作者簡介作者簡介:李姝博(1981-),女,遼寧阜新人,碩士,阜新高等??茖W校計算機信息技術系講師,研究方向為游戲軟件、計算機多媒體技術。
1 按鈕的事件響應
通過實例來說明按鈕事件響應的實現(xiàn)方法:制作輸入短信的界面,實現(xiàn)編輯短信的功能,并設有刪除按鈕,即單擊刪除按鈕實現(xiàn)刪除的功能。
首先制作界面,在界面上添加對象,應該注意的是按鈕不能直接放到界面上,要先將其放到TextBox的對象tb上,然后通過tb放到界面上,這時單擊按鈕沒有任何作用。此時按鈕還不能做事情,也就是說不能響應事件,只有具有一定事件響應功能的命令按鈕才有實際作用。
1.1 實現(xiàn)事件監(jiān)聽機制
所謂實現(xiàn)事件監(jiān)聽機制就是讓按鈕所在的類實現(xiàn)事件響應[1],也就是在該類上添加一個“耳朵”,能監(jiān)聽到有人單擊按鈕。這個“耳朵”就是按鈕的事件響應接口,即CommandListener。具體做法:編寫一個類去實現(xiàn)這個監(jiān)聽接口,即在這個類上加一個“耳朵”:
public class 類名 implements CommandListener{}
實現(xiàn)事件響應接口還有一個簡單的做法:眾所周知,Java支持一個類單重繼承并實現(xiàn)多個接口,所以不必重新編寫類,只要在原來類的基礎上實現(xiàn)接口就可以了,即在原來類頭后面直接加上 implements CommandListener即可。
1.2 接口功能設計
接口是抽象的,要想實現(xiàn)接口功能,還得仰仗接口中的方法,因此需要將接口中的方法重寫,也就是要把接口中所有的函數(shù)都重新寫到接口的類里。CommandListener接口中有一個CommandAction(Command c ,Displayable d)函數(shù),需要將這個函數(shù)寫到上面的類中,實際操作中不需要我們?nèi)?,當完成上一步添加完接口之后,在類頭會出現(xiàn)錯誤信息,單擊錯誤信息之后會顯示“添加未實現(xiàn)的方法”,單擊即可把CommandAction添加到類中,如圖1所示。
在這個函數(shù)中有兩個參數(shù),第一個參數(shù)表示發(fā)出事件的Command按鈕,就是用戶按了哪個按鈕,第二個參數(shù)表示發(fā)出事件的Displayable對象。Command是依附于Displayable的,因此,在事件處理類中,不但可以處理事件,還可以知道事件是由哪個Command按鈕發(fā)出,以及該Command按鈕所在的Displayable對象。
1.3 將事件源和事件響應對象綁定
事件編寫完后,只是能夠處理事件,并不能保證Command按鈕單擊后會觸發(fā)事件,因此還需要將Command按鈕和事件處理類(CommandListener)進行綁定。由于Command是依附于Displayable的,因此,綁定工作可由Displayable的對象tb來完成,即tb.setCommandListener(this)。
1.4 具體事件編寫
前3步都完成之后,該程序應該可以和用戶進行交互了。但是交互的具體內(nèi)容是什么,用戶具體要讓程序?qū)崿F(xiàn)什么功能,去完成什么任務,是本步驟要實現(xiàn)的。單擊刪除按鈕實現(xiàn)刪除功能,完成這個功能的語句寫到哪里?前面已經(jīng)提到,需要寫到CommandAction(Command c ,Displayable d)函數(shù)中,具體代碼如下[2]:
這就是按鈕事件響應的全過程,只要是單擊按鈕實現(xiàn)功能就需要完成以上4個步驟。對于不同案例,前3個步驟基本不變,變化的只是具體事件。
2 表單元素事件響應
表單的事件響應有兩種:表單元素按鈕事件響應,即ItemCommand事件;表單元素狀態(tài)改變事件響應,即ItemState事件。
2.1 ItemCommand事件響應
同樣,本文通過實例來說明ItemCommand事件響應實現(xiàn)方法。
制作一個QQ登陸界面,QQ號文本框被激活后,選擇左下角的“清除內(nèi)容”按鈕,就能在QQ號框中清除光標前的字符;密碼文本框被激活之后,同樣選擇右下角的“清除內(nèi)容”按鈕,就能在密碼框中清除光標前的字符。同樣是按鈕的交互,該案例能不能用上面的按鈕事件響應方法去實現(xiàn)呢?答案是否定的,因為本例中,雖然有一個命令按鈕“清除內(nèi)容”,但是該命令按鈕所作的事情和具體的文本框有關,通過CommandListener雖然可以知道是哪一個命令按鈕被選擇,卻無法知道當前光標在哪個文本框內(nèi),也就無法確定到底要清除誰的內(nèi)容。
由此可見,該實例可以使用表單元素的事件響應,通過它可以進行此處的事件響應處理。具體實現(xiàn)和按鈕的事件響應很類似,也要經(jīng)過四步,這里做簡要敘述,重點介紹兩者的區(qū)別。
2.1.1 寫事件處理類
實現(xiàn)Javax.microedition.lcdui. ItemCommandListener;(簡單的方法是直接在類頭的后面加上兩個單詞:Implements ItemCOmmandListener)。
2.1.2 重寫ItemCommandListener中的CommandAction方法
CommandAction(Command c ,item i),特別地,前面分析的按鈕事件響應中該函數(shù)的第二個參數(shù)是Displayable,而在此是item,這就是主要的區(qū)別,也就是通過這個函數(shù)能解決前面所說的按鈕事件響應不能解決的問題,即:“通過CommandListener雖然可以知道是哪一個命令按鈕被選擇,卻無法知道當前光標在哪個文本框內(nèi),也就無法確定到底要清除誰的內(nèi)容”,所以該案例必須用表單的事件響應去解決。
2.1.3 將事件源和事件響應對象綁定
在本例中即為TextField和ItemCommandListener綁定。具體做法:
tf1. setItemCommandListener(this)
tf2. setItemCommandListener(this)
因為這里有兩個文本框,所以綁定時要注意一定是兩個TextField的對象分別和該類綁定。
2.1.4 具體事件的實現(xiàn)
值得注意的是,CommandAction(Command cmd ,item item)方法中的兩個參數(shù)是做了修改的,即變?yōu)镃ommandAction(Command c ,item i)。
這就是表單按鈕的事件響應實現(xiàn)方法,與按鈕的事件響應的主要區(qū)別在于第二步,也正是因為第二步中函數(shù)的參數(shù)不同,實現(xiàn)功能也就不同。
2.2 ItemState事件
ItemState事件相當于在Item的狀態(tài)發(fā)生改變時發(fā)出命令。例如,制作一個短信發(fā)送界面,在界面中,首先出現(xiàn)的是短信編輯界面,界面左下方有一個“返回”按鈕,點擊后能夠返回到歡迎界面;當在文本框中輸入短信后,左下方的按鈕自動變?yōu)椤扒宄谋尽?,可以將光標左邊的文本清除。這里的“返回”按鈕變?yōu)椤扒宄谋尽卑粹o就是應用ItemState事件來實現(xiàn)的。簡單做法如下。
2.2.1 寫事件處理類
3 結(jié)語
無論是怎樣的事件響應,都應該先制作界面,然后按步驟去實現(xiàn)按鈕的交互。制作界面應注意的是:按鈕事件響應中的按鈕是放在Displayable類上的,而表單按鈕的事件響應按鈕一定要放到表單(Item)上[3],綁定也是有所區(qū)別的。用戶在應用這兩種事件響應時應多加注意,以免達不到理想效果。
參考文獻:
[1] 高宇航,王琨,袁世雄.注重用戶體驗的觸屏手機交互設計研究[J].黑龍江科學,2014(4):261262.
[2] 郭克華.Java ME 移動開發(fā)實例精講[M].北京:清華大學出版社,2011.
[3] 陳燕.基于Android平臺的UX手機交互主題的設計與實現(xiàn)[J].電腦開發(fā)與應用,2014(5):6063.
責任編輯(責任編輯:杜能鋼)