Processing (mouseX/mouseY) und Android

  • Antworten:8
Andreas K.
  • Forum-Beiträge: 36

30.04.2013, 12:25:43 via Website

Hallo, ich habe folgenden Processing sketch:

Hello,

i have following sketch:
Car myCar1;
Car myCar2; // Two objects!


void setup() {
size(400,800);
// Parameters go inside the parentheses when the object is constructed.
myCar1 = new Car(color(255,0,0),10,0,2);
myCar2 = new Car(color(0,0,255),100,0,1);
}

void draw() {
background(255);
myCar1.drive();
myCar1.display();
myCar2.drive();
myCar2.display();
}

// Even though there are multiple objects, we still only need one class.
// No matter how many cookies we make, only one cookie cutter is needed.
class Car {
color c;
float xpos;
float ypos;
float xspeed;

// The Constructor is defined with arguments.
Car(color tempC, float tempXpos, float tempYpos, float tempXspeed) {
c = tempC;
xpos = tempXpos;
ypos = tempYpos;
xspeed = tempXspeed;
}

void display() {
stroke(0);
fill(c);
rectMode(CENTER);
rect(xpos,ypos,75,75);
}

void drive() {

ypos = ypos + xspeed;
if (ypos > height) {
ypos = 0;
}
}
}

Jetzt möchte ich gerne das ypos=0 ist, sobald eines der Objekte berührt wird. Leider krieg ich das nicht hin.

if(mouseX=xpos && mouseY=ypos)....hat nicht funktioniert.

Antworten
impjor
  • Forum-Beiträge: 1.793

30.04.2013, 13:59:57 via App

1. Falscher Vergleich. Wenn du etwas in Java vergleichst, dann nutze == statt =
2. Du prüfst, ob xMouse und xPos gleich sind, was bedeutet das? Die Nur wenn du genau die linke Seite des Autos mit dem Finger triffst, wird die if-Frage ausgeführt. Du musst noch die Breite einbeziehen. Genau das selbe mit y.

Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Andreas K.
  • Forum-Beiträge: 36

30.04.2013, 14:11:35 via Website

Hallo, ich hab es nun so gemacht:

if(mousePressed==true && mouseX<=xpos+35 && mouseX>=xpos-35 && mouseY<=ypos+35 && mouseY>=ypos-35){ypos=0; x=x+1;}

Bin aber davon ausgegangen, dass xpos/ypos die Mitte des Kastens ist.

Antworten
impjor
  • Forum-Beiträge: 1.793

30.04.2013, 14:23:34 via App

Ok, wenn es xPos/yPos die Mittel Mitte meint (rectMode(CENTER) ??), dann stimmt es, wenn du die 35 durch 37 (75/2) ersetzt. Ich weiß nicht, woher du mousePressed hast? Klappt's denn?

Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Andreas K.
  • Forum-Beiträge: 36

30.04.2013, 14:31:13 via Website

MousePressed funktioniert.

MousePressed gibt true zurück, wenn die Maus geklickt ist, bzw. wenn der Bildschirm des Smartphones berührt wird. Ohne MousePressed würde die mouseX und mouseY Position gespeichert bleiben und jedesmal wenn das Auto über den letzten XY-Punkt fährt würde ypos wieder 0 werden, auch wenn man den Bildschirm nicht berührt.

Antworten
impjor
  • Forum-Beiträge: 1.793

30.04.2013, 14:36:14 via App

Ach so, normaler Weise macht man das über Events, sprich eine Funktion (also hier deine if-Abfrage) wird nur ausgeführt, wenn man den Finger auf das Display drückt, bzw. bewegt, dass ist Resourcen sparender als eine GameLoop, aber natürlich auch möglich, auch wenn ich mich frage, woher du diese Werte nimmst. (Doch einen Listener eingefügt?)

Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Andreas K.
  • Forum-Beiträge: 36

30.04.2013, 14:40:09 via Website

Woher ich den Wert für mousePressed nehme? MousePressed ist ein Befehl aus Processing.

Antworten
Andreas K.
  • Forum-Beiträge: 36

02.05.2013, 17:42:25 via Website

Gibt es eine Möglichkeit mehrere Objekte automatisch zu erzeugen?

Antworten