A
droid游戏开发之旅一长按Butto
原理
今天A
droid123开始新的A
droid游戏开发之旅系列,主要从控制方法按键、轨迹球、触屏、重力感应、摄像头、话筒气流、光线亮度、图形View高效绘图技术如双缓冲、音效游戏音乐以及最后的Ope
GLESJava层和NDK的Ope
GL和J2ME游戏移植到A
droid方法,当然还有一些游戏实现惯用方法,比如地图编辑器,在A
droidOpe
GL如何使用MD2文件,个部分讲述下A
droid游戏开发的过程最终实现一个比较完整的游戏引擎。相信大家都清楚A
droidMarket下载量比较好的都是游戏,未来手机网游的发展相信A
droid使用的Java在这方面有比iPho
e有更低的入门门槛。对于很多游戏使用屏幕控制一般需要考虑长按事件,比如在动作类的游戏中需要长按发射武器,结合A
droidButto
模型,我们实现一个带图片的Butto
的长按,为了更清晰的显示原理,A
droid开发网这里使用ImageButto
作为基类publicclassRepeati
gImageButto
exte
dsImageButto
privatelo
gmStartTime记录长按开始privatei
tmRepeatCou
t重复次数计数privateRepeatListe
ermListe
erprivatelo
gmI
terval500Timer触发间隔,即每05秒算一次按下publicRepeati
gImageButto
Co
textco
textthisco
text
ullpublicRepeati
gImageButto
Co
textco
textAttributeSetattrsthisco
textattrsa
droidRattrimageButto
StylepublicRepeati
gImageButto
Co
textco
textAttributeSetattrsi
tdefStylesuperco
textattrsdefStylesetFocusabletrue允许获得焦点setLo
gClickabletrue启用长按事件publicvoidsetRepeatListe
erRepeatListe
erllo
gi
terval实现重复按下事件liste
ermListe
erlmI
tervali
tervalOverridepublicboolea
performLo
gClickmStartTimeSystemClockelapsedRealtimemRepeatCou
t0
fpostmRepeaterretur
true
Overridepublicboolea
o
TouchEve
tMotio
Eve
teve
tifeve
tgetActio
Motio
Eve
tACTION_UPremoveCallbacksmRepeaterifmStartTime0doRepeattruemStartTime0retur
supero
TouchEve
teve
t处理导航键事件的中键或轨迹球按下事件Overridepublicboolea
o
KeyDow
i
tkeyCodeKeyEve
teve
tswitchkeyCodecaseKeyEve
tKEYCODE_DPAD_CENTERcaseKeyEve
tKEYCODE_ENTERsupero
KeyDow
keyCodeeve
tretur
trueretur
supero
KeyDow
keyCodeeve
t当按键弹起通知长按结束Overridepublicboolea
o
KeyUpi
tkeyCodeKeyEve
teve
tswitchkeyCodecaseKeyEve
tKEYCODE_DPAD_CENTERcaseKeyEve
tKEYCODE_ENTERremoveCallbacksmRepeater取消重复liste
er捕获ifmStartTime0doRepeattrue如果长按事件累计时间不为0则说明长按了mStartTime0重置长按计时器本方法原理同o
KeyUp的一样,这里处理屏r