2012-02-01 3 views
1

Произошла ошибка.Почему нет подходящего конструктора для SurfaceView?

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, я получаю сообщение об ошибке, которое показано выше для 'супер (игра);'

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

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

Благодарим за помощь!

ответ

1

Посмотрите на эту ссылку: http://developer.android.com/reference/android/view/SurfaceView.htmlhttp://developer.android.com/reference/android/view/SurfaceView.html

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

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

+0

Очень простое исправление, я изменил игру в строке 18 на AndroidGame, чтобы у меня был контекст. Спасибо огромное! – Zeveso

+0

Нет проблем! И это оказалось гораздо более простой проблемой, чем я ожидал, и это здорово! – Tom