馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
如題小弟最近遇到了個奇怪的東西= =?
因為沒有人願意幫忙 找過了書也都沒有頭緒
最近寫了抓偷魚貓的小遊戲(回味兒時抓貓)
我是用onDraw寫的 做呼應 定義因該都有做到 找到的錯誤 因該都有對應到 完全不知道錯在哪裡= =
MainactivityView
- public class MainActivityView extends View{
- DisplayMetrics mDM;
- WindowManager mWM;
- final int mLineOffset;
- final int mMaxDrawStep;
- final int mMaxDrawRang;
-
- Paint mPaint;
- Bitmap mBitmap;
- Bitmap mBitmapResize;
- final int mBitmapSize;
-
- boolean mHit =false;
- int mMiss =0;
- int mMissable =5;
- int mCatch =0;
- int mReflashTime =100000;
-
- RandomCoordinate mRCThread;
- Random mRandom;
- int mRandomX;
- int mRandomY;
-
- public MainActivityView (Context context){
- super(context);
-
- TypedValue tdv =new TypedValue();
- context.getTheme().resolveAttribute(android.R.attr.actionBarSize,tdv,true);
- mLineOffset =tdv.complexToDimensionPixelSize(tdv.data,context.getResources().getDisplayMetrics());
-
- mDM=new DisplayMetrics();
- mWM=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
- mWM.getDefaultDisplay().getMetrics(mDM);
- mMaxDrawStep =mDM.widthPixels/mLineOffset;
- mMaxDrawRang =mMaxDrawStep*mLineOffset;
- mBitmapSize =2*mLineOffset;
-
- mPaint = new Paint();
- mBitmap =((BitmapDrawable)getResources().getDrawable(R.drawable.images123)).getBitmap();
- mBitmapResize =Bitmap.createScaledBitmap(mBitmap,mBitmapSize-10, mBitmapSize-10, true);
-
- mRandom = new Random(System.currentTimeMillis());
- mRCThread = new RandomCoordinate();
- mRCThread .start();
-
- }
- public void onDraw(Canvas canvas)
- {
- canvas.drawColor(Color.LTGRAY);
- mPaint.setColor(Color.GRAY);
- mPaint.setStrokeWidth(1);
-
- for (int cnt = 0; cnt <= mMaxDrawStep; cnt++)
- canvas.drawLine(0,cnt*mLineOffset,mMaxDrawRang,cnt*mLineOffset, mPaint);
- for (int cnt = 0; cnt <= mMaxDrawStep; cnt++)
- canvas.drawLine(cnt*mLineOffset+mLineOffset, 0,cnt*mLineOffset+mLineOffset, mMaxDrawRang,mPaint);
- canvas.drawBitmap(mBitmapResize, mRandomX*mLineOffset,mRandomY*mLineOffset,mPaint);
-
- mPaint.setColor(Color.RED);
- mPaint.setStrokeWidth(3);
-
- if(mHit)
- canvas.drawLine(mRandomX*mLineOffset, mRandomY*mLineOffset,mRandomX*mLineOffset+mBitmapSize,mRandomY*mLineOffset+mBitmapSize, mPaint);
- mPaint.setColor(Color.BLACK);
- mPaint.setTextSize(mLineOffset/2);
- if(mMiss<mMissable){
-
- canvas.drawText(String.format("失敗次數:%d次", mMiss),mLineOffset,2*mBitmapSize+mMaxDrawRang,mPaint);
- canvas.drawText("喵~~(抓到偷魚貓了Ψ(o ∀ o)Ψ!!!)",mLineOffset ,mMaxDrawRang+mBitmapSize , mPaint);
- }else if(mMiss>mMissable){
- canvas.drawText(String.format("失敗次數:%d次", mMiss,"喵~喵~喵~(偷魚貓跑了T_T)"), mLineOffset,mMaxDrawRang+2*mBitmapSize,mPaint);
- }
-
- }
- public void myTouchPoint(float x,float y){
- if(!mHit){
- if((mRandomX*mLineOffset<=x)&&(x<=mRandomY*mLineOffset+mBitmapSize)){
- if((mRandomY*mLineOffset+mLineOffset<=y)&&
- (y <=mRandomY*mLineOffset+mBitmapSize+mLineOffset)){
- mHit =true;
- mMiss =0;
- }else{mMiss++;}
- postInvalidate();
- }
- }
- }
- class RandomCoordinate extends Thread {
- public void run(){
- try{
- while(mMiss<mMissable){
- mRandomX =(int)(mRandom.nextFloat()*mMaxDrawStep);
- mRandomY =(int)(mRandom.nextFloat()*mMaxDrawStep);
- if((mRandomX*mLineOffset+mBitmapSize<=mMaxDrawRang)&&(mRandomY*mLineOffset+mBitmapSize<=mMaxDrawRang)){
- sleep(mReflashTime);
- postInvalidateOnAnimation();
- mHit =false;
- }
- }
- }catch (Exception e){}
- }
- }
- }
複製代碼
Mainactivity
- package com.example.example;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.MotionEvent;
- public class MainActivity extends Activity {
- MainActivityView mView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mView = new MainActivityView(this);
- setContentView(mView);
- }
- public boolean onTouchEvent(MotionEvent event){
-
- if(event.getAction() == MotionEvent.ACTION_DOWN)
- mView.myTouchPoint(event.getX(),event.getY());
- return super.onTrackballEvent(event);
- }
- }
複製代碼
這程式碼是建一個MainactivityView得class寫好後 再讓Mainactivity讀到MainactivityView裡去阿 怎麼讀不到呢?
想請求解惑 我束手無策了 |
|