Android Studio Fehler Overriding method should call super.draw

Y

YouKnowNow

Neues Mitglied
0
Hey Leute ich bin neu in der Android Welt und hab ne Frage unzwar warum ist dieses draw rot unterstrichen mit dem Fehler:Overriding method should call super.draw
hier mein Code:
Falls mehr benötigt wird bitte anschreiben

Code:
package com.youknownow.myfirstgame;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;


public class GamePanel extends SurfaceView implements SurfaceHolder.Callback
{
    public static final int WIDTH = 856;
    public static final int HEIGHT = 480;
    private MainThread thread;
    private Background bg;

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


        //add the callback to the surfaceholder to intercept events
        getHolder().addCallback(this);

        thread = new MainThread(getHolder(), this);

        //make gamePanel focusable so it can handle events
        setFocusable(true);
    }

    @override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height){}

    @override
    public void surfaceDestroyed(SurfaceHolder holder){
        boolean retry = true;
        while(retry)
        {
            try{thread.setRunning(false);
                thread.join();

            }catch(InterruptedException e){e.printStackTrace();}
            retry = false;
        }

    }

    @override
    public void surfaceCreated(SurfaceHolder holder){

        bg = new Background(BitmapFactory.decodeResource(getResources(), R.drawable.grassbg1));
        bg.setVector(-5);
        //we can safely start the game loop
        thread.setRunning(true);
        thread.start();

    }
    @override
    public boolean onTouchEvent(MotionEvent event)
    {
        return super.onTouchEvent(event);
    }
    public void update(){

        bg.update();

    }

    @override
    public void draw(Canvas canvas){
        final float scaleFactorX = getWidth()/WIDTH;
        final float scaleFactorY = getHeight()/HEIGHT;
        if (canvas != null) {
            final int savedState = canvas.save();
            canvas.scale(scaleFactorX, scaleFactorY);
            bg.draw(canvas);
            canvas.restoreToCount(savedState);
        }
    }
}
 
Zuletzt bearbeitet von einem Moderator:
Bearbeitet von: Kiwi++Soft - Grund: Bitte Code-Tags verwenden!
"call super.draw" sagt schon alles:

Code:
@override
public void draw(Canvas canvas){
    super.draw(canvas)
    ....
}
 
@markus.tullius
das ist für mich neuland. Was mich interessiert ist , was ist der unterschied zu

Code:
public void draw(Canvas canvas){
    ...
    super.draw(canvas)
}

Also den Aufruf am ende ?
Gehe ich richtig davon aus dass die eigenen draws dann überschrieben würden?
 
Nonsens schrieb:
Also den Aufruf am ende ?
Gehe ich richtig davon aus dass die eigenen draws dann überschrieben würden?

Wird auch bei C++/MFC so gemacht .

stehts am Anfang, wird erst mal das Interne Geraffel erledigt. (empfohlen)
- dann Customs

Stehts am Ende , kannst du davor machen was du willst , hat keinen Zweck ....

lg
Stefan
 
Das hängt davon ab. Statments werden nach einander abgearbeitet. Steht super. .... vorne, wird die super Methode zuerst aufgerufen, am Schluss zuletzt.

Interessant wird es eigentlich erst, wenn man die super Methode in der Superklasse aufruft. Und so auch die Base Methode aufruft. Aktuell wüsste ich nicht, was passiert. Bei mir steht im diesen Fall die super Methode eigentlich immer an erster Stelle, ich glaube den anderen Fall hatte ich noch nie.
 
Hallo,
das mit dem Aufruf von Super.... ist mir schon klar, ich wollte nur wissen was im dem speziellen fall bei "draw()" passiert.
Überschreibt das System die eigene Zeichnungen komplett oder bleibt was übrig?
 
Probiere es aus. :)
 

Ähnliche Themen

5
Antworten
0
Aufrufe
1.151
586920
5
SaniMatthias
Antworten
19
Aufrufe
961
swa00
swa00
D
Antworten
23
Aufrufe
2.554
Data2006
D
Zurück
Oben Unten