Android游戏开发之绘制游戏主菜单与进度条加载进度
Android游戏开发之绘制游戏主菜单与进度条加载进度
本例中出现的资源图片全部源于互联网,本文仅供个人学习。
由于Android开发 横竖屏的切换会给游戏开发造成非常麻烦的事情 所以在游戏的制作当中会强制手机屏幕横屏或者竖屏避免横竖屏切换造成的数据重置 即使让程序不在切换屏幕后调用onCreat()方法 也会带来屏幕自适应的麻烦 所以Android的游戏一般都会强制横屏或者强制竖屏。
强制横屏的方法
- //强制为横屏
- setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
- setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE););//强制为横屏
1.游戏主菜单
游戏中的菜单在游戏开发中虽然在程序员的眼力不是最难的开发难点但是它在玩家眼力确实很重要的一部分,因为任何一款游戏第一个进入玩家眼帘的就是游戏的主菜单,制作一个漂亮的界面对于游戏品质来说会提高很多。现在主流的游戏主菜单都是使用漂亮的背景加上一些动画效果而构成,今天雨松MOMO用自己写的一个Demo向大家介绍如何制作一个漂亮的游戏菜单。
Demo中这个游戏界面一共是又3个部件组成的
1.游戏背景图
2. 图片按钮 教学 与 设置, 在程序中须要对点击图片按钮进行事件的处理
3.动画效果 红框中的小鱼是一组游戏动画 ,从一进游戏菜单界面开始小鱼就从屏幕的右边向左边游让界面动了起来, 游戏菜单中可以多加一些这样的动画效果会使游戏界面活灵活现起来,给玩家一种视觉的冲击,游戏动画绘制的方法我已经在前几篇博客详细的说明 如果看到这里你还是不太清楚动画如何来绘制请阅读我前几篇博客。
为了方便使用图片按钮 所以我写了一个ImageButton类 专门来处理图片按钮的绘制以及监听,这个类是非常有存在必要的 用对象去处理 会比在代码中写死坐标点来处理方便很多可以更好地管理这些图片按钮。用户点击屏幕后程序只需要调用ImageButton成员方法IsClick() 根据返回值 就可以确定用户点击的范围是否在这个图片按钮中。
- public class ImageButton {
- /**按钮图片**/
- private Bitmap mBitButton = null;
- /**图片绘制的XY坐标**/
- private int mPosX =0;
- private int mPosY =0;
- /**图片绘制的宽高**/
- private int mWidth =0;
- private int mHeight =0;
- public ImageButton(Context context, int frameBitmapID, int x, int y) {
- mBitButton = ReadBitMap(context,frameBitmapID);
- mPosX = x;
- mPosY = y;
- mWidth = mBitButton.getWidth();
- mHeight = mBitButton.getHeight();
- }
- /**
- * 绘制图片按钮
- * @param canvas
- * @param paint
- */
- public void DrawImageButton(Canvas canvas, Paint paint) {
- canvas.drawBitmap(mBitButton, mPosX, mPosY, paint);
- }
- /**
- * 判断是否点中图片按钮
- * @param x
- * @param y
- */
- public boolean IsClick(int x, int y) {
- boolean isClick = false;
- if (x >= mPosX && x <= mPosX + mWidth && y >= mPosY
- && y <= mPosY + mHeight) {
- isClick = true;
- }
- return isClick;
- }
- /**
- * 读取图片资源
- * @param context
- * @param resId
- * @return
- */
- public Bitmap ReadBitMap(Context context, int resId) {
- BitmapFactory.Options opt = new BitmapFactory.Options();
- opt.inPreferredConfig = Bitmap.Config.RGB_565;
- opt.inPurgeable = true;
- opt.inInputShareable = true;
- // 获取资源图片
- InputStream is = context.getResources().openRawResource(resId);
- return BitmapFactory.decodeStream(is, null, opt);
- }
- }
|
评论暂时关闭