Почему нет подходящего конструктора для SurfaceView? - PullRequest
1 голос
/ 01 февраля 2012

Вот ошибка.

enter image description here

FastRenderView.java

package framework.impl;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import framework.Game;

public class FastRenderView extends SurfaceView implements Runnable {

    Game game;
    Bitmap frameBuffer;
    Thread renderThread = null;
    SurfaceHolder holder;
    volatile boolean running = false;

    public FastRenderView(Game game, Bitmap frameBuffer) {
        super(game);
        this.game = game;
        this.frameBuffer = frameBuffer;
        this.holder = getHolder();
    }

    @Override
    public void run() {
        Rect dstRect = new Rect();
        long startTime = System.nanoTime();
        while(running) {
            if(!holder.getSurface().isValid()) {
                continue;
            }

            float deltaTime = (System.nanoTime() - startTime) / 1000000000.0f;
            startTime = System.nanoTime();

            game.getScreen().update(deltaTime);
            game.getScreen().present(deltaTime);

            Canvas canvas = holder.lockCanvas();
            canvas.getClipBounds(dstRect);
            canvas.drawBitmap(frameBuffer, null, dstRect, null);
            holder.unlockCanvasAndPost(canvas);
        }
    }

    public void resume() {
        running = true;
        renderThread = new Thread(this);
        renderThread.start();
    }

    public void pause() {
        running = false;
        while(true) {
            try {
                renderThread.join();
                break;
            } catch(Exception e) {
                // retry
            }
        }
    }
}

Проблема в том, что в строке 19 я получаю сообщение об ошибке, показанное вышеfor 'super (game);'

Вопрос в том, как это исправить?

Если вам нужна дополнительная информация, дайте мне знать !!!

Спасибо за вашпомощь!

1 Ответ

1 голос
/ 01 февраля 2012

Взгляните на эту ссылку: http://developer.android.com/reference/android/view/SurfaceView.htmlhttp://developer.android.com/reference/android/view/SurfaceView.html

Когда вы вызываете super (), вы передаете игровому объекту родительский конструктор, аналогичный SurfaceView.Единственный однопараметрический конструктор, реализованный SurfaceView, принимает объект Context.Класс Game наследует от Context где-то в цепочке наследования?

Если нет, то это ваша проблема.Если да, отправьте код для класса Game.

...