最近正在开发一款Android的游戏,这是我首次在Android上进行游戏的开发,没有使用那些开源的游戏引擎,因为只是一个很小的游戏,如果以后需要进行一些比较复杂的游戏开发,那就需要用到游戏引擎了。国人开发的LGame这个引擎很不错,配有文档和很多实例,还专门针对AVG进行扩展,例子、文档齐全,推荐使用。
先来说说我的心得吧。
首先我遇到第一个问题是游戏场景的切换。Android开发中,最主要的类就是Activity了,它相当于一个窗口,所以最先想到的游戏场景切换方式是进行Activity的跳转,也就是把每个场景都做成一个Activity,然后用Intent来跳转。但是Activity毕竟是一个特殊的类,它在运行过程中很多东西不好控制,比如传参以及将某些数据进行回传。所以推荐的的是,每个场景都是一个SurfaceView,切换场景就只是切换SurfaceView就行了。曾经上网查询过如何切换SurfaceView,但是没有结果。本人C语言程序员出身,所以想到的切换无非就是进行一个回调函数而已,那就简单了,JAVA同样能实现回调函数,JAVA没有指针,所以改用接口来实现,下面是一个例子。
接口:
public Interface IActivity
{
public Context getContext();
public changeView(View view);
}
游戏Activity:
public class Game extends Activity implements IActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//创建游戏SurfaceView
GameView gameView = new GameView(this);
}
@Override
public Context getContext()
{
return this.getApplicationContext();
}
@Override
public changeView(View view)
{
setContentView(view); //注意1
}
}
游戏SurfaceView:
public class GameView extends SurfaceView implements SurfaceHolder.Callback
{
private IActivity iActivity;
public GameView (IActivity iActivity)
{
super(iActivity.getContext());
this. iActivity = iActivity;
}
//切换场景
public void changeView()
{
iActivity.changeView(this);
}
}
这下明白了吧,那个setContentView(view)(注意1那个地方)估计很多人会眼熟,是的,他都会出现在工程创建的那个Activity里,形式为setContentView(R.layout,main),setContentView这个方法就是Activity里,用于让窗口显示什么内容的方法,R.layout,main是一个布局XML,我们把它替换为我们自己的View就行了(View是SurfaceView的父类)。
第二个问题是View中长摁动作监听:监听触屏点击或者键盘点击相信很多人都明白了,就是在View或者Activity中覆盖(Override)onTouchEvent这个方法,但是这个方法在Activity与View中有些区别。TouchEvent这个方法是boolean类型,在Activity中返回类型是false,表示
监听不结束,持续监听,这样就能监听到长摁事件了。但是在View中,很多人一开始会遇到只监听到MotionEvent.ACTION_DOWN,无法监听到MotionEvent.ACTION_UP事件,也就是无法监听到长摁事件,用户一点击屏幕就完成了监听。解决这个办法很简单,在这个覆盖的方法里,返回一个true就能监听长摁事件了,具体原因我也不清楚,说实话,Android还有很多东西我没吃透,欢迎有识之士能指点一二。
相关推荐
android之surfaceview游戏开发
安卓Android源码——SurfaceView添加组件view不被组件覆盖.zip
Android圆形相机预览窗口,圆形SurfaceView
Android 构建游戏框架View与SurFaceView的区别
Android123做的一个关于Android游戏开发的教程 1.Android游戏开发之旅一 长按Button原理 2.Android游戏开发之旅二 View和SurfaceView 3.Android游戏开发之旅三 View类详解 4.Android游戏开发之旅四 Canvas和...
Android游戏开发二 View和SurfaceView Android游戏开发三 View类详解 Android游戏开发四 Canvas和Paint实例 Android游戏开发五Path和Typeface Android游戏开发六 自定义View Android游戏开发七 自定义SurfaceView ...
Android游戏框架SurfaceView介绍 PDF TAG:Android 游戏框架 SurfaceView
多个SurfaceView无法切换问题
这是在上网收集的,能够截取当前Activity中surfaceView中图片。本人亲测可以通过。
开发工具eclipse
SurfaceView游戏框架实例,讲解如何使用,如何掌握基础性东西
Android开发中,如何实现SurfaceView添加组件view不被组件覆盖。
Android的SurfaceView实现图片缩放、滑动,网上资源不多,目前还有些问题,仅供参考。
android View、SurfaceView Demo - 对应博客:http://blog.csdn.net/amoscxy/article/details/77480655
android使用双缓冲辨析及surfaceview使用例子
Step2:在界面布局文件中定义SurfaceView控件,或在程序中创建SurfaceView控件,并为SurfaceView的SurfaceHolder添加Callback监听器; Step3:调用MediaPlayer对象的setDisney(SurfaceHolder sh)方法将所播放的视频...
Android中使用surfaceview开发的Camera相机,内容含有注释,非常清楚
View与SurfaceView游戏框架Demo,监听用户方向键事件以及触摸事件。