- Forum-Beiträge: 8
08.06.2016, 12:00:42 via Website
08.06.2016 12:00:42 via Website
Hallo, ich bin gerade dabei ein Ping Pong Spiel zu programmieren und die Schläger mittels OnTouchListener zu bewegen. Leider klappt das noch nicht so ganz. Wenn ich das Programm starte, werden zwar die Schläger angezeigt und der Ball flitzt hin und her, aber die App reagiert auf keine der TouchEvents.
Hier mein Code:
public class MainActivity extends AppCompatActivity implements View.OnTouchListener{
float x, y;
Grafik grafik;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
grafik = new Grafik(this);
grafik.setOnTouchListener(this);
Log.d("Test","Bin im onCreate, Klasse Main", null);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
Log.d("Test","Bin im onTouch, Klasse Main", null);
switch (action){
case MotionEvent.ACTION_DOWN:
grafik.paddleOneX = event.getX();
grafik.paddleOneY = event.getY();
Toast.makeText(getApplicationContext(),"Action Down", Toast.LENGTH_SHORT).show();
break;
case MotionEvent.ACTION_MOVE:
grafik.paddleOneX = event.getX();
grafik.paddleOneY = event.getY();
break;
case MotionEvent.ACTION_UP:
grafik.paddleOneX = event.getX();
grafik.paddleOneY = event.getY();
break;
}
return true;
}
}
public class Grafik extends View{
Bitmap ball, paddleOne, paddleTwo;
int x, y;
boolean directionXPlus = true;
boolean directionXMinus = true;
final String TAG = "Tescht";
float posX, posY;
float paddleOneX, paddleOneY, paddleTwoX, paddleTwoY;
public Grafik(Context context) {
super(context);
init(null, 0);
}
public Grafik(Context context, AttributeSet attrs) {
super(context, attrs);
init(attrs, 0);
}
public Grafik(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(attrs, defStyleAttr);
}
private void init(AttributeSet attrs, int i) {
paddleOne = BitmapFactory.decodeResource(getResources(), R.drawable.tennisschlaeger);
paddleTwo = BitmapFactory.decodeResource(getResources(), R.drawable.tennisschlaeger);
ball = BitmapFactory.decodeResource(getResources(), R.drawable.tennisball);
x = y = 0;
paddleOneX = 300;
paddleOneY = 30;
paddleTwoX = 300;
paddleTwoY = 800;
Log.d("Test","Bin im init, Klasse Grafik", null);
Toast.makeText(getContext(),"paddleOneX = " + paddleOneX, Toast.LENGTH_LONG).show();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.BLACK);
if (((x < (canvas.getWidth()) - ball.getWidth())) && directionXPlus == true )
{
x += 5;
}else{
x = x - 5;
directionXPlus = false;
}
if ((x > 0) && directionXPlus == false ){
x -= 5;
}else{
x = x + 5;
directionXPlus = true;
}
if ((y < (canvas.getHeight()) - ball.getHeight()) && directionXMinus == true ){
y += 5;
}else{
y -= 5;
directionXMinus = false;
}
if ((y > 0) && directionXMinus == false ){
y -= 5;
}else{
y += 5;
directionXMinus = true;
}
canvas.drawBitmap(ball, x, y, null);
canvas.drawBitmap(paddleOne, paddleOneX, paddleOneY, null);
canvas.drawBitmap(paddleTwo, paddleTwoX, paddleTwoY, null);
Log.d("Test","Bin im onDraw, Klasse Grafik", null);
invalidate();
}
}
Und noch die XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.vince.myapplication.MainActivity">
<com.example.vince.myapplication.Grafik
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Spieler 1"
android:id="@+id/tv_player_1"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_marginStart="36dp"
android:layout_marginTop="35dp"
android:textColor="#ffffff" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Spieler 2"
android:id="@+id/tv_player_2"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_marginEnd="29dp"
android:layout_marginBottom="31dp"
android:textColor="#ffffff" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Score"
android:id="@+id/tv_score_2"
android:textColor="#ffffff"
android:layout_alignTop="@+id/tv_player_1"
android:layout_alignEnd="@+id/tv_player_2" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Score"
android:id="@+id/tv_score_1"
android:textColor="#ffffff"
android:layout_alignTop="@+id/tv_player_2"
android:layout_alignStart="@+id/tv_player_1" />
Hat einer von euch einen Tipp für mich wo der oder die Fehler liegt/liegen?
Grüß euch
Vincenzo
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.