`

Android游戏开发之爆炸效果

阅读更多

    在做Android游戏MagicBubble开发的时候,在连通两个Bubbles的时候,Bubble会以水泡爆破的情形消失。为了实现这一效果,我查找了不少资料,希望能找到一些标准的实现方面,花了不少时间,发觉Android关于游戏开发的资料实在太少了,更不用说标准做法了,没办法,只能按照自己的思路来实现这一效果。

    我的思路是这样的(仅供参考,希望有更好做法的朋友跟我们共享一下):在FrameLayout里面加入一ImageView,再定义一个爆炸的Animation,不需要的时候,ImageView就隐藏起来,需要的时候,就把ImageView移动到需要的地方,再StartAnimation,这样,就可以实现爆炸的效果。

   下面是简化后的程序的代码,程序的效果如下:点中屏幕中任意地方,就在点击地方显示爆炸效果。

 

首先是Animation的定义,定义一个Frame Animation,依次播放5帧动画,每帧动画持续时间为50毫秒:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="true">
    <item android:drawable="@drawable/explode1" android:duration="50" />
    <item android:drawable="@drawable/explode2" android:duration="50" />
    <item android:drawable="@drawable/explode3" android:duration="50" />
    <item android:drawable="@drawable/explode4" android:duration="50" />
    <item android:drawable="@drawable/explode5" android:duration="50" />  
</animation-list>

 接着是主程序代码:

package com.ray.bubble;

import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnTouchListener;
import android.widget.FrameLayout;
import android.widget.ImageView;

public class BubbleExplosion extends Activity {
	private FrameLayout fl;
	private ExplosionView exv1;
	private AnimationDrawable exa1;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //set full screen
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,
                      WindowManager.LayoutParams. FLAG_FULLSCREEN);
        fl = new FrameLayout(this);
        fl.setBackgroundResource(R.drawable.bg);
        
        exv1 = new ExplosionView(this);
		exv1.setVisibility(View.INVISIBLE);
	    exv1.setBackgroundResource(R.anim.explosion);
	    exa1 = (AnimationDrawable)exv1.getBackground();
		fl.addView(exv1);
		fl.setOnTouchListener(new LayoutListener());
        setContentView(fl);
    }
    
    class ExplosionView extends ImageView{

		public ExplosionView(Context context) {
			super(context);
		}
		//handle the location of the explosion
		public void setLocation(int top,int left){
			this.setFrame(left, top, left+40, top+40);
		}	
    }
    
    class LayoutListener implements OnTouchListener{

		public boolean onTouch(View v, MotionEvent event) {
			//firstly, u have to stop the animation,if the animation
			//is starting ,u can not start it again!
			exv1.setVisibility(View.INVISIBLE);
			exa1.stop();
			float x = event.getX();
			float y = event.getY();
			exv1.setLocation((int)y-20, (int)x-20);
			exv1.setVisibility(View.VISIBLE);
			exa1.start();
			return false;
		}
    	
    }
}

 配合Android的SurfaceView,Animation可以实现很好的过渡效果,SurfaceView的用法很简单,可参考:

http://rayleung.iteye.com/blog/420410

分享到:
评论
10 楼 lbqxl0122 2009-09-04  
学习了,,最近刚开始学习android
9 楼 gtman 2009-09-04  
能不能加点的接触判断,如果点重合,从重合点处开始破裂...
8 楼 yuankai 2009-09-03  
raymondlueng 写道
kombest 写道
挺好,可2个物体碰撞相互裂开爆炸怎么实现呢,假如物体形状是随机产生的

这个就值得研究一下了,不知道有没朋友有好的想法?

是不是要把单个问题当做一个正方形,然后看2个物体的4个面有没有重叠,如果有重叠就爆炸???
7 楼 raymondlueng 2009-09-03  
lordhong 写道
raymondlueng 写道
kombest 写道
挺好,可2个物体碰撞相互裂开爆炸怎么实现呢,假如物体形状是随机产生的

这个就值得研究一下了,不知道有没朋友有好的想法?


谢谢分享!

如果是ImageView或者UI View的话, 可以试下View.getHitRect(Rect outRect)
如果是不规则形状的话, 貌似就麻烦了..

lord老大客气了,老大的文章写得很好,学到很多东西!
6 楼 lordhong 2009-09-03  
raymondlueng 写道
kombest 写道
挺好,可2个物体碰撞相互裂开爆炸怎么实现呢,假如物体形状是随机产生的

这个就值得研究一下了,不知道有没朋友有好的想法?


谢谢分享!

如果是ImageView或者UI View的话, 可以试下View.getHitRect(Rect outRect)
如果是不规则形状的话, 貌似就麻烦了..
5 楼 raymondlueng 2009-09-02  
neverland 写道
研究了一下你的代码,学到不少东西,感谢分享。

不客气,互相学习!
4 楼 neverland 2009-09-02  
研究了一下你的代码,学到不少东西,感谢分享。
3 楼 raymondlueng 2009-09-02  
kombest 写道
挺好,可2个物体碰撞相互裂开爆炸怎么实现呢,假如物体形状是随机产生的

这个就值得研究一下了,不知道有没朋友有好的想法?
2 楼 kombest 2009-09-02  
挺好,可2个物体碰撞相互裂开爆炸怎么实现呢,假如物体形状是随机产生的
1 楼 挪威的幽灵 2009-09-02  
想法可行。。。。

相关推荐

    android游戏开发例子_飞机大战怪兽

    在Android游戏开发领域,"飞机大战怪兽"是一个常见的入门级项目,非常适合初学者学习。这个例子通过构建一个简单的2D游戏,展示了Android游戏开发的基本流程和技术要点。下面我们将详细探讨其中涉及的知识点。 首先...

    Android粒子爆炸效果

    在Android应用开发中,视觉效果往往能够提升用户体验,其中粒子爆炸效果是一种常见且吸引人的动态效果,常用于游戏、动画或者界面过渡等场景。本文将深入探讨如何在Android Studio中实现这种效果,以及如何利用提供...

    Android游戏开发之飞行射击类游戏原理实现源码

    本资源"Android游戏开发之飞行射击类游戏原理实现源码"提供了一个深入学习和实践此类游戏开发的宝贵机会。下面我们将探讨飞行射击类游戏的关键技术和实现步骤。 首先,游戏的核心是游戏循环(Game Loop)。游戏循环...

    android炸弹爆炸游戏

    《Android炸弹爆炸游戏开发详解》 在Android平台上,游戏开发是一项充满挑战与乐趣的任务,尤其是一款结合了帧动画、补间动画以及音效的游戏——"android炸弹爆炸游戏"。这款游戏展示了Android开发中的多个核心知识...

    Android小游戏源码

    【Android小游戏源码】是一个适合初学者学习的项目,它基于Eclipse开发...这个源码项目是实践和学习Android游戏开发的宝贵资源,不仅可以帮助初学者掌握基本技能,还能激发他们进一步探索更复杂的Android游戏开发技术。

    android游戏开发基础模拟粒子系统

    在Android游戏开发中,模拟粒子系统是一个非常关键的技能,它能够为游戏带来生动的视觉效果,如火焰、烟雾、水波、爆炸等。粒子系统通过生成大量小图形(粒子)并控制它们的行为,来模拟复杂的动态效果,极大地提升...

    Android 3D游戏案例开发大全3 代码

    在Android平台上,开发3D游戏是一项复杂而富有挑战性的任务,...通过学习这些章节,开发者不仅可以掌握创建3D游戏的基本技能,还能深入了解Android游戏开发的高级技巧,为创建更丰富、更具沉浸感的游戏体验奠定基础。

    Android打飞机类游戏源码

    源代码的提供对于学习Android游戏开发的开发者或者对游戏编程感兴趣的爱好者来说,是一份宝贵的参考资料。接下来,我们将深入探讨这款游戏中涉及的关键技术和知识点。 1. **Android游戏开发基础**: - **Android ...

    Android游戏源码简单飞行射击游戏

    首先,我们要明确Android游戏开发的核心是利用Java或Kotlin语言,并结合Android SDK中的游戏开发工具和库,如Android Studio、OpenGL ES等。在这个项目中,我们可能看到的主要文件和组件包括: 1. **主Activity**:...

    android游戏泡泡大作战源码

    总结,通过分析"泡泡大作战"的源码,开发者不仅可以掌握Android游戏开发的基本技巧,还能深入了解游戏逻辑、UI设计、数据管理、性能优化等多个方面。这是一份宝贵的实践资料,对提升Android游戏开发能力大有裨益。在...

    android爆炸效果

    在Android游戏开发中,爆炸效果是增强用户体验、提升游戏沉浸感的重要元素,特别是在动作、冒险或者策略类游戏中。 首先,我们来了解一下爆炸效果的基本组成部分。一个逼真的爆炸效果通常由以下几个要素构成: 1. ...

    Android开发打飞机游戏

    在Android平台上开发一款打飞机游戏是一项综合性的任务,涉及到许多技术层面和设计原则。下面将详细阐述这个过程中可能涉及的关键知识点。 首先,我们要了解Android...同时,持续学习和实践是提升游戏开发技能的关键。

    Android 飞机大战小游戏

    这个项目是Android应用开发中的一个经典案例,可以帮助初学者深入理解Android游戏开发的基本原理和技术栈。下面将详细探讨这款游戏中涉及的关键知识点。 1. **Android SDK和Eclipse IDE**:Android SDK是Android...

    AndEngineExamples-GLES2_android游戏_android_

    《AndEngineExamples-GLES2》是针对Android游戏开发的一个开源示例库,它基于OpenGL ES 2.0,是Android平台上进行2D游戏开发的重要工具。这个资源集合为初学者提供了一个良好的学习平台,帮助他们理解和掌握Android...

    Android游戏源码切水果小游戏有详细注释.zip

    【Android游戏开发基础】 在Android平台上,游戏开发主要依赖于Java或Kotlin语言,结合Android SDK(Software Development Kit)和Android Studio IDE进行。本压缩包中的"Android游戏源码切水果小游戏有详细注释"是...

    android开发的飞机小游戏

    10. **测试与发布**:游戏开发完成后,需在多种设备和Android版本上进行测试,确保兼容性。发布前应完成APK签名、版本号管理、权限设置等工作,遵循Google Play的提交规范。 综上所述,开发一个Android平台的飞机小...

    基于Android的飞机大战游戏

    4. **游戏框架**:虽然描述中没有提及具体的游戏框架,但通常开发Android游戏时会用到如LibGDX这样的框架。LibGDX提供了丰富的图形、音频和输入处理功能,简化了游戏开发过程。 5. **OpenGL ES**:飞机大战可能使用...

    android飞机游戏.rar

    一、Android游戏开发基础 1. Android SDK:Android飞机游戏的开发离不开Android Software Development Kit(SDK),它是Android系统开发的基础工具,包含了编译、调试和部署应用所需的全部组件。开发者需要在...

Global site tag (gtag.js) - Google Analytics