R
Ratzefummel321
Neues Mitglied
- 0
Halli Hallo,
und zwar bin ich grad dabei eine kleine Spiele app zu programmieren. Es ist so, dass ich noch anfänger auf dem Gebiet Android und generell Spieleprogrammierung bin...
Aktueller Stand ist, dass ich eine Startacitivity hab mit drei Buttons. Bei druck auf Start gelangt man in die Spielactivity.
Um mich langsam an animationen heranzutasten habe ich ein object von links nach rechts laufen lassen... das klappt auch ganz gut. Aber nachdem ich dem Canvas gleichzeitig einen Background verpasst hab läuft das ganze extrem langsam ab. Klar, es wird daran liegen, dass jedesmal der hintergrund neu gezeichnet werden muss. Hat jemand ne Idee, wie ich da die Performance verbessern kann, weil im fertigen Spiel noch ne ganze menge mehr passieren soll.
Zweite frage ist, wie ich nun diese bewegung mit einem Listener verknüpfen kann. Ziel solles sein, dass die Spielfigur am anfang des spiels unten links auf dem canvas platziert ist und wenn ich links neben die figur drücke soll sich diese immer ein paar pixel nach links bewegen. Wenn ich rechts neben die figur drücke das gleiche nur halt nach rechts....
Hier erstmla meine Klassen:
Das ist die Main-Activity. Hier dürfte alles klar gehen:
Das ist die Spielactivity:
ich hoffe jemand kann mir ein paar tipps geben....
und zwar bin ich grad dabei eine kleine Spiele app zu programmieren. Es ist so, dass ich noch anfänger auf dem Gebiet Android und generell Spieleprogrammierung bin...
Aktueller Stand ist, dass ich eine Startacitivity hab mit drei Buttons. Bei druck auf Start gelangt man in die Spielactivity.
Um mich langsam an animationen heranzutasten habe ich ein object von links nach rechts laufen lassen... das klappt auch ganz gut. Aber nachdem ich dem Canvas gleichzeitig einen Background verpasst hab läuft das ganze extrem langsam ab. Klar, es wird daran liegen, dass jedesmal der hintergrund neu gezeichnet werden muss. Hat jemand ne Idee, wie ich da die Performance verbessern kann, weil im fertigen Spiel noch ne ganze menge mehr passieren soll.
Zweite frage ist, wie ich nun diese bewegung mit einem Listener verknüpfen kann. Ziel solles sein, dass die Spielfigur am anfang des spiels unten links auf dem canvas platziert ist und wenn ich links neben die figur drücke soll sich diese immer ein paar pixel nach links bewegen. Wenn ich rechts neben die figur drücke das gleiche nur halt nach rechts....
Hier erstmla meine Klassen:
Das ist die Main-Activity. Hier dürfte alles klar gehen:
Code:
package com.example.flunky;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.os.Build;
public class MainActivity extends ActionBarActivity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
setContentView(new SpielActivity(this));
}
}
Das ist die Spielactivity:
Code:
package com.example.flunky;
import java.util.concurrent.TimeUnit;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.view.View.OnTouchListener;
public class SpielActivity extends View implements OnTouchListener {
Bitmap bitmap;
int x,y;
public SpielActivity (Context context){
super(context);
this.setOnTouchListener(this);
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
x = 0;
y = 0;
}
public void onDraw(Canvas canvas){
Bitmap background = BitmapFactory.decodeResource(getResources(),
R.drawable.game_background);
Rect dst = new Rect();
dst.set(0, 0, canvas.getWidth(), canvas.getHeight());
canvas.drawBitmap(background, null, dst, null);
if (x < canvas.getWidth()){
x += 10;
} else {
x = 0;
}
Paint p = new Paint();
canvas.drawBitmap(bitmap, x, y, p);
invalidate();
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
}
ich hoffe jemand kann mir ein paar tipps geben....