zoukankan      html  css  js  c++  java
  • 游戏框架View以及简单的运用

    View类常需要实现的抽象函数

        

    public class MyView extends View {
        public MyView(Context context) {
            super(context);
        }
        
        /**
         * 该方法在该View实例化的时候自动就调用了
         */
        @Override
        public void onDraw(Canvas canvas) {
            super.onDraw(canvas);
        }
        
        /**
         * 按键按下的事件
         */
        @Override
        public boolean onKeyDown(int KeyCode,KeyEvent event) {
            return true;
        }
        /**
         * 按键按上的事件
         */
        @Override
        public boolean onKeyUp(int KeyCode,KeyEvent event) {
            return true;
        }
        
        /**
         * 触摸事件
         */
        @Override
        public boolean onTouchEvent(MotionEvent event){
            return true;
        }
    }

    下面 用上面提到的方法进行绘制图片并让它动起来

    public class MyView extends View {
        Paint paint;
        float x, y; // x,y坐标
        float srceenW,srceenH; //手机屏幕的宽高
        public MyView(Context context,float srceenW,float srceenH) {
            super(context);
            paint = new Paint(); 
            paint.setStyle(Style.STROKE); //设置画笔的样式
            paint.setAntiAlias(true); 
            this.srceenH=srceenH;
            this.srceenW=srceenW;
        }
    
        /**
         * 该方法在该View实例化的时候自动就调用了 默认只执行一次
         */
        @Override
        public void onDraw(Canvas canvas) {
            canvas.drawColor(Color.WHITE); //设置背景
            paint.setColor(Color.BLACK); //画笔的颜色
            canvas.drawText("Play Game", x, y, paint); //绘制 字幕
            super.onDraw(canvas);
        }
    
        /**
         * 按键按下的事件
         */
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            return super.onKeyDown(keyCode, event);
        }
    
        /**
         * 按键按上的事件
         */
        @Override
        public boolean onKeyUp(int keyCode, KeyEvent event) {
            return super.onKeyUp(keyCode, event);
        }
    
        /**
         * 触摸事件
         */
        @Override
        public boolean onTouchEvent(MotionEvent event) {//将画的图移动到手触摸的位置
            x= event.getX();  //重新设置字幕的绘制位置
            y= event.getY();
            invalidate(); //重绘  再次调用onDraw方法
            return super.onTouchEvent(event);
        }
    }

    最后在Activity里面调用

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //设置手机全盘
            this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            //获取手机屏幕宽高
            Display display=getWindowManager().getDefaultDisplay();
            setContentView(new MyView(this, display.getWidth(), display.getHeight()));
        }

    这样我们调用手机屏幕的位置,“Play Game”字就会在什么位置显示

  • 相关阅读:
    全局变量与全局静态变量的区别:
    Python模块学习 ---- datetime
    python sys.path用法
    过来人谈《去360还是留在百度?》
    [编码问题] Python错误: SyntaxError: Non-ASCII character
    E513: write error, conversion failed (make 'fenc' empty to override)"解决办法
    巴真的点评
    set之hashset与TreeSet、LinkedHashSet实现原理
    list之linedlist与arraylist实现原理
    统一会话与单点登录
  • 原文地址:https://www.cnblogs.com/cindyOne/p/2990793.html
Copyright © 2011-2022 走看看