Android3D游戏——触屏事件与多个Activity

先说一下到现在我这游戏做的进度吧。其实是以前已经做过一次了,不过感觉设计不合理所以从头再理一遍。在这个过程中又增加了许多新的元素,也有了很多新的想法。目前的进度是已经做完logo展示与游戏资源加载这两个框架,正在做的是主游戏菜单,框架也已经做好了,只要把一些图片,音效做好就可以做下面的子菜单了。

今天要讲的内容主要有两点,一个是触屏事件,一个是多个Activity。

现如今,智能手机也有一定的普及率了,至少我看到我的同学大多数都是触屏的智能手机了。所以做好触屏事件的处理,是你软件成功与否的关键因素之一。尤其是做3D游戏,游戏的大部分控制都是靠触屏完成的。设计良好的控制方式,可以有效提高游戏的可玩度。


在每个Activity中,我们都可以对触屏事件进行处理。基本的实现方式是复写onTouchEvent方法:

	public boolean onTouchEvent(MotionEvent me) {
		if (!isLock) {
			if (int_UserInterface == int_Menu) {
				if (me.getAction() == MotionEvent.ACTION_DOWN) {
					xpos = me.getX();
					ypos = me.getY();
					// 选择新游戏/
					if (mMenuText_New.isSelected(xpos, ypos)) {
						mMenuText_New.Change("Menu_Txt_New_Sel");
						mSelectSound.play();
					}
				} else if (me.getAction() == MotionEvent.ACTION_MOVE) {
					xpos = me.getX();
					ypos = me.getY();
					// 选择新游戏/
					if (mMenuText_New.isChange()&& !mMenuText_New.isSelected(xpos, ypos)) {
						
						mMenuText_New.Change("Menu_Txt_New");
						
					} else if (!mMenuText_New.isChange()&& mMenuText_New.isSelected(xpos, ypos)) {
						
						mMenuText_New.Change("Menu_Txt_New_Sel");
						mSelectSound.play();
						
					}
				} else if (me.getAction() == MotionEvent.ACTION_UP) {
					// 选择新游戏/
					if (mMenuText_New.isSelected(xpos, ypos)) {

					}
				}

			}

		}
		return false;
	}
上面是我游戏中的一段代码,可以看出来主要做的是对ACTION_DOWN、ACTION_MOVE、ACTION_UP这些动作的处理。在不同情况下实现不同的处理,从而实现不同的效果。其实这个东西并不复杂。

第二个要讲的是多Activity,这里强烈推荐Mars录制的相关Android的视频,有很多季了,能让自学者少走很多弯路。

一个应用程序中可以有一个Activity,也可以有多个。Activity我们可以狭义的理解为是应用程序中的视图。单个Activity的应用程序,就需要在这一个Activity中不停的更换屏幕内容,这样的好处是节省资源,其他好处我就不知道了(水平有限)。多个Activity的应用程序,拿我这个游戏来说吧,我基本上一个界面或场景就是一个Activity,这样根据Activity的生命周期,在相应的阶段对其进行处理,比只有一个Activity时要简单的多,因为在切换场景时需要模拟onStart()、onDestroy()等的工作,而且代码挤在一个Activity类中也很乱。

这样就又有一个问题了,既然要用那就有一个先后的显示顺序吧,如何实现?

其实在项目的AndroidManifest.xml文件中已经定义了有哪个Activity开始。

例如:

	<activity
            android:label="@string/app_name"
            android:name=".GameActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


中间这段代码就是

 	    <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

好了,下一个问题,怎样从一个Activity启动另一个Activity呢?


这里就要用到Intent了

就像这样:

				Intent intent=new Intent();
				intent.setClass(this, MenuActivity.class);
				this.startActivity(intent);

非常简单吧,就三行。当然要传数据的话就不止了。

稍微解释一下,intent.setClass(this, MenuActivity.class)

this就是当前Activity了,后面的是你要启动的Activity,这里是由当前Activity启动MenuActivity。

this.startActivity(intent);
这个方法就是启动了。

不过在这些工作之前,我们还应该注册一下MenuActivity。

方法如下,打开AndroidManifest.xml

在<application></application>中间添加如下:

        <activity
            android:label="menu"
            android:name=".MenuActivity" >
        </activity>

然后在创建这个Activity的布局文件XXX.xml,当然这个要视情况而定了。

好了今天就是这些了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值