綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] 關於程式呼應與onDraw?

[複製連結] 查看: 1276|回覆: 0|好評: 0
跳轉到指定樓層
樓主
lieak5922512 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2014-6-16 23:29

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
如題小弟最近遇到了個奇怪的東西= =?

因為沒有人願意幫忙 找過了書也都沒有頭緒

最近寫了抓偷魚貓的小遊戲(回味兒時抓貓)

我是用onDraw寫的 做呼應 定義因該都有做到 找到的錯誤 因該都有對應到 完全不知道錯在哪裡= =
MainactivityView

  1. public class MainActivityView extends View{
  2.         DisplayMetrics mDM;
  3.         WindowManager mWM;
  4.         final int mLineOffset;
  5.         final int mMaxDrawStep;
  6.         final int mMaxDrawRang;
  7.        
  8.         Paint mPaint;
  9.         Bitmap mBitmap;
  10.         Bitmap mBitmapResize;
  11.         final int mBitmapSize;
  12.        
  13.         boolean mHit =false;
  14.         int mMiss =0;
  15.         int mMissable =5;
  16.         int mCatch =0;
  17.         int mReflashTime =100000;
  18.        
  19.     RandomCoordinate mRCThread;
  20.     Random       mRandom;
  21.     int          mRandomX;
  22.     int          mRandomY;
  23.        

  24.   public MainActivityView (Context context){
  25.           super(context);
  26.           
  27.           TypedValue tdv =new TypedValue();
  28.           context.getTheme().resolveAttribute(android.R.attr.actionBarSize,tdv,true);
  29.           mLineOffset =tdv.complexToDimensionPixelSize(tdv.data,context.getResources().getDisplayMetrics());
  30.           
  31.           mDM=new DisplayMetrics();
  32.           mWM=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
  33.           mWM.getDefaultDisplay().getMetrics(mDM);
  34.           mMaxDrawStep =mDM.widthPixels/mLineOffset;
  35.           mMaxDrawRang =mMaxDrawStep*mLineOffset;
  36.           mBitmapSize =2*mLineOffset;
  37.           
  38.           mPaint = new Paint();
  39.           mBitmap =((BitmapDrawable)getResources().getDrawable(R.drawable.images123)).getBitmap();
  40.           mBitmapResize =Bitmap.createScaledBitmap(mBitmap,mBitmapSize-10, mBitmapSize-10, true);
  41.           
  42.           mRandom = new Random(System.currentTimeMillis());
  43.           mRCThread = new RandomCoordinate();
  44.           mRCThread .start();
  45.           
  46.   }
  47.   public void onDraw(Canvas canvas)
  48.   {
  49.           canvas.drawColor(Color.LTGRAY);
  50.           mPaint.setColor(Color.GRAY);
  51.           mPaint.setStrokeWidth(1);
  52.           
  53.           for (int cnt = 0; cnt <= mMaxDrawStep; cnt++)
  54.                 canvas.drawLine(0,cnt*mLineOffset,mMaxDrawRang,cnt*mLineOffset, mPaint);
  55.           for (int cnt = 0; cnt <= mMaxDrawStep; cnt++)
  56.                         canvas.drawLine(cnt*mLineOffset+mLineOffset, 0,cnt*mLineOffset+mLineOffset, mMaxDrawRang,mPaint);
  57.             canvas.drawBitmap(mBitmapResize, mRandomX*mLineOffset,mRandomY*mLineOffset,mPaint);
  58.             
  59.             mPaint.setColor(Color.RED);
  60.             mPaint.setStrokeWidth(3);
  61.             
  62.             if(mHit)
  63.                     canvas.drawLine(mRandomX*mLineOffset, mRandomY*mLineOffset,mRandomX*mLineOffset+mBitmapSize,mRandomY*mLineOffset+mBitmapSize, mPaint);
  64.             mPaint.setColor(Color.BLACK);
  65.             mPaint.setTextSize(mLineOffset/2);
  66.             if(mMiss<mMissable){
  67.                    
  68.                     canvas.drawText(String.format("失敗次數:%d次", mMiss),mLineOffset,2*mBitmapSize+mMaxDrawRang,mPaint);
  69.                     canvas.drawText("喵~~(抓到偷魚貓了Ψ(o ∀ o)Ψ!!!)",mLineOffset ,mMaxDrawRang+mBitmapSize , mPaint);
  70.             }else if(mMiss>mMissable){
  71.                     canvas.drawText(String.format("失敗次數:%d次", mMiss,"喵~喵~喵~(偷魚貓跑了T_T)"), mLineOffset,mMaxDrawRang+2*mBitmapSize,mPaint);
  72.             }
  73.             
  74.           }
  75.   public void myTouchPoint(float x,float y){
  76.           if(!mHit){
  77.                   if((mRandomX*mLineOffset<=x)&&(x<=mRandomY*mLineOffset+mBitmapSize)){
  78.                           if((mRandomY*mLineOffset+mLineOffset<=y)&&
  79.                                           (y <=mRandomY*mLineOffset+mBitmapSize+mLineOffset)){
  80.                                   mHit  =true;
  81.                                   mMiss =0;
  82.                           }else{mMiss++;}
  83.                           postInvalidate();
  84.                   }
  85.           }
  86.   }
  87.   class  RandomCoordinate extends Thread {
  88.           public void run(){
  89.                   try{
  90.                           while(mMiss<mMissable){
  91.                                   mRandomX =(int)(mRandom.nextFloat()*mMaxDrawStep);
  92.                                   mRandomY =(int)(mRandom.nextFloat()*mMaxDrawStep);
  93.                                   if((mRandomX*mLineOffset+mBitmapSize<=mMaxDrawRang)&&(mRandomY*mLineOffset+mBitmapSize<=mMaxDrawRang)){
  94.                                         sleep(mReflashTime);
  95.                                         postInvalidateOnAnimation();
  96.                                         mHit =false;
  97.                                   }
  98.                           }
  99.                   }catch (Exception e){}
  100.           }
  101.   }
  102. }
複製代碼


Mainactivity

  1. package com.example.example;

  2. import android.app.Activity;
  3. import android.os.Bundle;

  4. import android.view.MotionEvent;

  5. public class MainActivity extends Activity {
  6.     MainActivityView mView;
  7.         @Override
  8.         protected void onCreate(Bundle savedInstanceState) {
  9.                 super.onCreate(savedInstanceState);
  10.                 mView = new MainActivityView(this);
  11.                 setContentView(mView);

  12.                 }
  13.         public boolean onTouchEvent(MotionEvent event){
  14.        
  15.                 if(event.getAction() == MotionEvent.ACTION_DOWN)
  16.                mView.myTouchPoint(event.getX(),event.getY());
  17.             return super.onTrackballEvent(event);
  18.         }
  19. }
複製代碼


這程式碼是建一個MainactivityView得class寫好後 再讓Mainactivity讀到MainactivityView裡去阿 怎麼讀不到呢?

想請求解惑 我束手無策了
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則