編輯:Android游戲開發
本文首先為大家講解觸屏事件處理中的常見問題,也可以說是需要修正的bug,之後介紹如何禁止橫豎屏切換。
觸屏事件處理的常見問題
先看一段代碼:
Java代碼代碼很簡單,一個是處理實體按鍵的響應事件,另一個是觸屏的響應事件、那麼這裡要說的有兩點:
第一點:
在Surfaceview中我們的onKeyDown 雖然是重寫了view的函數,但是仍然需要在初始化的時候去聲明獲取焦點,setFocusable(true); 如果不調用此方法,那麼會造成按鍵無效。原因是因為如果是自己定義一個繼承自View的類,重新實現onKeyDown方法後,只有當該View獲得焦點時才會調用onKeyDown方法,Actvity中的onKeyDown方法是當所有控件均沒有處理該按鍵事件時,才會調用。
第二點:
也是今天主要需要講得的觸屏響應的函數,onTouchEvent()!重寫此函數的時候默認最後一句是依照基類的返回方式,return super.onTouchEvent(event);。然後我們在其中去判定 MotionEvent.ACTION_MOVE、MotionEvent.ACTION_DOWN、MotionEvent.ACTION_UP 相對應觸屏操作的 拖動、按下、抬起;對此一切都是正確的,但是真正的的運行起項目的時候發現 Log.v(“Himi”, “ACTION_MOVE”); 這裡log的”ACTION_MOVE”,永遠不會執行!!!為此我找到了解決方法,那麼先解釋下為什麼會出現此類情況。
解釋:
onTouchEvent(),預設使用Oeverride這個方法,通常情況下去呼叫super.onTouchEvent()並傳回布林值。但是這裡要注意一點,預設如果去呼叫super.onTouchEvent()則很有可能super裡面並沒做任何事,並且回傳false回來,一旦回傳false回來,很可能後面的event (例如:Action_Move、Action_Up) 都會收不到了,所以為了確保保後面event能順利收到,要注意是否要直接呼super.TouchEvent()。
Java代碼這個例子是當你Touch Down的時候會送event進來,接著印出Log,然後呼叫super的onTouchEvent()並回傳布林值。此時會回傳false,並且之後再也收不到Touch Move或Touch Up的event,為了要確保能收到event,必須要回傳true,所以在這裡要注意一下。
這個問題也是當時用到此函數的時候發現的,找了很多資料才找到其解釋,所以以後使用onTouchEvent()函數的時候最後的
return super.onTouchEvent(event);
一定要改為:
return true;
最後還要注意一點:在初始化的時候不要忘記setFocusableInTouchMode(true);觸屏模式獲取焦點,比較類似 setFocusable(true);。
——setFocusable(true);//此方法是用來響應按鍵!如果是自己定義一個繼承自View的類,重新實現onKeyDown方法後,只有當該View獲得焦點時才會調用onKeyDown方法,Actvity中的onKeyDown方法是當所有控件均沒有處理該按鍵事件時,才會調用。
禁止橫豎屏切換
下面講下如何禁止橫屏和豎屏切換!
在某些游戲中我們可能需要禁止橫屏和豎屏切換,其實實現這個要求很簡單,只要在AndroidManifest.xml 裡面加入這一行 android :screenOrientation=”landscape"(landscape 是橫向,portrait 是縱向)。
在android中每次屏幕的切換動會重啟Activity,所以應該在Activity銷毀前保存當前活動的狀態,在Activity再次Create的時候載入配置。在activity加上android:configChanges=”keyboardHidden|orientation”屬性,就不會重啟activity。而是去調用onConfigurationChanged(Configuration newConfig)。這樣就可以在這個方法裡調整顯示方式。
MainActivity中:
Java代碼AndroidManifest.xml中:
XML/HTML代碼轉自:http://www.himigame.com/android-game/315.html
在本次教程中,我們將完成小球這個類的編寫 首先給大家看下小球這個類的類圖: 主要確定小球的坐標:x,y。小球的半徑:r。以及小球的運動函數和如何
不知大家有沒有注意過libgdx顯示漢字的問題,其實還是非常值得關注,試想如果
貝塞爾曲線,很多人可能不太了解,什麼叫做貝塞爾曲線呢?這裡先做一下簡單介紹:貝
今天和大伙討論一下Android開發中的Tween動畫的實現。首先它和上一章我們討論的Frame動畫同屬於系統提供的繪制動畫的方法。Tween動畫主