Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> Android游戲開發:如何實現爆炸效果

Android游戲開發:如何實現爆炸效果

編輯:高級開發

在做android游戲MagicBubble開發的時候,在連通兩個Bubbles的時候,Bubble會以水泡爆破的情形消失。筆者的思路是這樣的:在FrameLayout裡面加入一ImageView,再定義一個爆炸的Animation,不需要的時候,ImageView就隱藏起來,需要的時候,就把ImageVIEw移動到需要的地方,再StartAnimation,這樣,就可以實現爆炸效果。

下面是簡化後的程序的代碼,程序的效果如下:點中屏幕中任意地方,就在點擊地方顯示爆炸效果。

MagicBubble1

MagicBubble2

首先是Animation的定義,定義一個Frame Animation,依次播放5幀動畫,每幀動畫持續時間為50毫秒:

  1. <animation-list XMLns:android="http://schemas.android.com/apk/res/android"
  2. android:oneshot="true">
  3. <item android:drawable="@drawable/explode1" android:duration="50" />
  4. <item android:drawable="@drawable/explode2" android:duration="50" />
  5. <item android:drawable="@drawable/explode3" android:duration="50" />
  6. <item android:drawable="@drawable/explode4" android:duration="50" />
  7. <item android:drawable="@drawable/explode5" android:duration="50" />
  8. </animation-list>

接著是主程序代碼:

  1. package com.ray.bubble;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.graphics.drawable.AnimationDrawable;
  5. import android.os.Bundle;
  6. import android.vIEw.MotionEvent;
  7. import android.view.VIEw;
  8. import android.vIEw.Window;
  9. import android.vIEw.WindowManager;
  10. import android.view.VIEw.OnTouchListener;
  11. import android.widget.FrameLayout;
  12. import android.widget.ImageVIEw;
  13. public class BubbleExplosion extends Activity {
  14. private FrameLayout fl;
  15. private ExplosionVIEw exv1;
  16. private AnimationDrawable exa1;
  17. public void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. //set full screen
  20. requestWindowFeature(Window.FEATURE_NO_TITLE);
  21. getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,
  22. WindowManager.LayoutParams. FLAG_FULLSCREEN);
  23. fl = new FrameLayout(this);
  24. fl.setBackgroundResource(R.drawable.bg);
  25. exv1 = new ExplosionVIEw(this);
  26. exv1.setVisibility(VIEw.INVISIBLE);
  27. exv1.setBackgroundResource(R.anim.explosion);
  28. exa1 = (AnimationDrawable)exv1.getBackground();
  29. fl.addVIEw(exv1);
  30. fl.setOnTouchListener(new LayoutListener());
  31. setContentVIEw(fl);
  32. }
  33. class ExplosionVIEw extends ImageVIEw{
  34. public ExplosionVIEw(Context context) {
  35. super(context);
  36. }
  37. // 處理爆炸的位置
  38. public void setLocation(int top,int left){
  39. this.setFrame(left, top, left+40, top+40);
  40. }
  41. }
  42. class LayoutListener implements OnTouchListener{
  43. public boolean onTouch(VIEw v, MotionEvent event) {
  44. //首先,你必須停止播放動畫,如果動畫開始,你不能重復一遍!
  45. exv1.setVisibility(VIEw.INVISIBLE);
  46. exa1.stop();
  47. float x = event.getX();
  48. float y = event.getY();
  49. exv1.setLocation((int)y-20, (int)x-20);
  50. exv1.setVisibility(VIEw.VISIBLE);
  51. exa1.start();
  52. return false;
  53. }
  54. }
  55. }

配合android的SurfaceView,Animation可以實現很好的過渡效果,SurfaceVIEw的用法很簡單。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved