簡體   English   中英

無法在意圖中解析構造函數

[英]Cannot resolve constructor in intent

我正在嘗試編輯此游戲代碼並在//顯示結果中調用第二個活動,以便在游戲結束時轉到另一個屏幕。 有一個錯誤“無法解析構造函數”。 在此輸入圖像描述

我認為問題在於意圖,但我不確定我能把它放在哪里。 你能幫助我嗎? 謝謝

這是GameView代碼

import android.annotation.SuppressLint;
import android.app.Activity;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.content.Intent;


public class GameView extends View {

    // Canvas
    private int canvasWidth;
    private int canvasHeight;

    // J
    //private Bitmap j;
    private Bitmap j[] = new Bitmap[2];
    private int jX = 10;
    private int jY;
    private int jSpeed;

    // Blue Ball
    private int blueX;
    private int blueY;
    private int blueSpeed = 15;
    private Paint bluePaint = new Paint();

    // Black Ball
    private int blackX;
    private int blackY;
    private int blackSpeed = 20;
    private Paint blackPaint = new Paint();

    // Background
    private Bitmap bgImage;




    // Score
    private Paint scorePaint = new Paint();
    private int score;

    // Level
    private Paint levelPaint = new Paint();

    // Life
    private Bitmap life[] = new Bitmap[2];
    private int life_count;

    // Status Check
    private boolean touch_flg = false;


    public GameView(Context context) {
        super(context);

        j[0] = BitmapFactory.decodeResource(getResources(), R.drawable.jun1);
        j[1] = BitmapFactory.decodeResource(getResources(), R.drawable.jun2);

        bgImage = BitmapFactory.decodeResource(getResources(), R.drawable.bg);

        bluePaint.setColor(Color.BLUE);
        bluePaint.setAntiAlias(false);

        blackPaint.setColor(Color.BLACK);
        blackPaint.setAntiAlias(false);

        scorePaint.setColor(Color.BLACK);
        scorePaint.setTextSize(32);
        scorePaint.setTypeface(Typeface.DEFAULT_BOLD);
        scorePaint.setAntiAlias(true);

        levelPaint.setColor(Color.DKGRAY);
        levelPaint.setTextSize(32);
        levelPaint.setTypeface(Typeface.DEFAULT_BOLD);
        levelPaint.setTextAlign(Paint.Align.CENTER);
        levelPaint.setAntiAlias(true);

        life[0] = BitmapFactory.decodeResource(getResources(), R.drawable.heart);
        life[1] = BitmapFactory.decodeResource(getResources(), R.drawable.heart_g);

        // First position.
        jY = 500;
        score = 0;
        life_count = 3;
    }

    @Override
    protected void onDraw(Canvas canvas) {

        canvasWidth = canvas.getWidth();
        canvasHeight = canvas.getHeight();

        canvas.drawBitmap(bgImage, 0, 0, null);

        // Bird
        int minBirdY = j[0].getHeight();
        int maxBirdY = canvasHeight - j[0].getHeight() * 3;

        jY += jSpeed;
        if (jY < minBirdY) jY = minBirdY;
        if (jY > maxBirdY) jY = maxBirdY;
        jSpeed += 2;

        if (touch_flg) {
            // Flap wings.
            canvas.drawBitmap(j[1], jX, jY, null);
            touch_flg = false;
        } else {
            canvas.drawBitmap(j[0], jX, jY, null);
        }


        // Blue
        blueX -= blueSpeed;
        if (hitCheck(blueX, blueY)) {
            score += 10;
            blueX = -100;
        }
        if (blueX < 0) {
            blueX = canvasWidth + 20;
            blueY = (int) Math.floor(Math.random() * (maxBirdY - minBirdY)) + minBirdY;
        }
        canvas.drawCircle(blueX, blueY, 10, bluePaint);


        // Black
        blackX -= blackSpeed;
        if (hitCheck(blackX, blackY)) {
            blackX = -100;
            life_count--;
            if (life_count == 0) {

                // Show Result
                Intent i = new Intent(this, result.class);
                i.putExtra("SCORE", score);
               }
        }
        if (blackX < 0) {
            blackX = canvasWidth + 200;
            blackY = (int) Math.floor(Math.random() * (maxBirdY - minBirdY)) + minBirdY;
        }
        canvas.drawCircle(blackX, blackY, 20, blackPaint);


        // Score
        canvas.drawText("Score : " + score, 20, 60, scorePaint);

        // Level
        canvas.drawText("Lv.1", canvasWidth / 2, 60, levelPaint);

        // Life
        for (int i = 0; i < 3; i++) {
            int x = (int) (560 + life[0].getWidth() * 1.5 * i);
            int y = 30;

            if (i < life_count) {
                canvas.drawBitmap(life[0], x, y, null);
            } else {
                canvas.drawBitmap(life[1], x, y, null);
            }
        }
    }

    public boolean hitCheck(int x, int y) {
        if (jX < x && x < (jX + j[0].getWidth()) &&
                jY < y && y < (jY + j[0].getHeight())) {
            return true;
        }
        return false;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            touch_flg = true;
            jSpeed = -20;
        }
        return true;
    }
}

View不會擴展Context類,Intent的構造函數需要你正在做的事情。

采用

Intent i = new Intent(getContext(), result.class);

在您的View類中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM