S
schornstein
Neues Mitglied
- 0
Hallo erstmal 
Ich habe vor ein paar Wochen angefangen mich mit Android und JAVA zu beschäftigen und wollte mal mit einem kleinen Projekt anfangen.
Hier ist zuerst der Code, die frage folgt danach:
package com.example.game;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class GameView extends SurfaceView {
private SurfaceHolder surfaceHolder;
private long lastClick;
private Bitmap livesPicture;
private int lives = 4;
private String livesString;
public GameView(Context context) {
super(context);
livesPicture = BitmapFactory.decodeResource(getResources(), R.drawable.lives);
surfaceHolder = getHolder();
surfaceHolder.addCallback(new SurfaceHolder.Callback() {
public void surfaceDestroyed(SurfaceHolder holder) {
}
public void surfaceCreated(SurfaceHolder holder) {
Canvas theCanvas = surfaceHolder.lockCanvas(null);
onDraw(theCanvas);
surfaceHolder.unlockCanvasAndPost(theCanvas);
}
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
// TODO Auto-generated method stub
}
});
}
private void drawLives(Canvas canvas, Paint paint) {
int xHeart = (int) (15);
int yHeart = (int) (12);
if (lives == 3) {
canvas.drawBitmap(livesPicture, xHeart, yHeart, paint);
canvas.drawBitmap(livesPicture, xHeart + livesPicture.getWidth()
+ 3 , yHeart, paint);
canvas.drawBitmap(livesPicture,
xHeart + 2 * livesPicture.getWidth() + 6, yHeart,
paint);
}
if (lives == 2) {
canvas.drawBitmap(livesPicture, xHeart, yHeart, paint);
canvas.drawBitmap(livesPicture, xHeart + livesPicture.getWidth()
+ 3, yHeart, paint);
}
if (lives == 1) {
canvas.drawBitmap(livesPicture, xHeart, yHeart, paint);
}
if (lives > 3) {
livesString = String.valueOf(lives);
final String lives = livesString + "x";
canvas.drawText(lives, 35, 30 , paint);
canvas.drawBitmap(livesPicture, 15 + 2
* livesPicture.getWidth() + 6, 12, paint);
}
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
canvas.drawColor(Color.DKGRAY);
drawLives(canvas, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
synchronized (getHolder()) {
lives--;
}
return true;
}
}
Und zwar möchte ich erreichen, wenn ich den Touchscreen berühre, dass meine "lives" um 1 Punkt weniger werden. Aber ich kriege das mit den OnTouch irgentwie nicht hin^^
Über eure Hilfe und Tipps würde ich mich sehr freuen.
PS: Bin neu hier im Forum ;D
Ich habe vor ein paar Wochen angefangen mich mit Android und JAVA zu beschäftigen und wollte mal mit einem kleinen Projekt anfangen.
Hier ist zuerst der Code, die frage folgt danach:
package com.example.game;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class GameView extends SurfaceView {
private SurfaceHolder surfaceHolder;
private long lastClick;
private Bitmap livesPicture;
private int lives = 4;
private String livesString;
public GameView(Context context) {
super(context);
livesPicture = BitmapFactory.decodeResource(getResources(), R.drawable.lives);
surfaceHolder = getHolder();
surfaceHolder.addCallback(new SurfaceHolder.Callback() {
public void surfaceDestroyed(SurfaceHolder holder) {
}
public void surfaceCreated(SurfaceHolder holder) {
Canvas theCanvas = surfaceHolder.lockCanvas(null);
onDraw(theCanvas);
surfaceHolder.unlockCanvasAndPost(theCanvas);
}
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
// TODO Auto-generated method stub
}
});
}
private void drawLives(Canvas canvas, Paint paint) {
int xHeart = (int) (15);
int yHeart = (int) (12);
if (lives == 3) {
canvas.drawBitmap(livesPicture, xHeart, yHeart, paint);
canvas.drawBitmap(livesPicture, xHeart + livesPicture.getWidth()
+ 3 , yHeart, paint);
canvas.drawBitmap(livesPicture,
xHeart + 2 * livesPicture.getWidth() + 6, yHeart,
paint);
}
if (lives == 2) {
canvas.drawBitmap(livesPicture, xHeart, yHeart, paint);
canvas.drawBitmap(livesPicture, xHeart + livesPicture.getWidth()
+ 3, yHeart, paint);
}
if (lives == 1) {
canvas.drawBitmap(livesPicture, xHeart, yHeart, paint);
}
if (lives > 3) {
livesString = String.valueOf(lives);
final String lives = livesString + "x";
canvas.drawText(lives, 35, 30 , paint);
canvas.drawBitmap(livesPicture, 15 + 2
* livesPicture.getWidth() + 6, 12, paint);
}
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
canvas.drawColor(Color.DKGRAY);
drawLives(canvas, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
synchronized (getHolder()) {
lives--;
}
return true;
}
}
Und zwar möchte ich erreichen, wenn ich den Touchscreen berühre, dass meine "lives" um 1 Punkt weniger werden. Aber ich kriege das mit den OnTouch irgentwie nicht hin^^
Über eure Hilfe und Tipps würde ich mich sehr freuen.
PS: Bin neu hier im Forum ;D