2017-03-04 2 views
1

Ich habe ein bewegtes Bild als HintergrundRocket bewegen sich durch Klasse. Verarbeitung

PImage background; 
int x=0; //global variable background location 
rocket Rocket; 

void setup(){ 
size(800,400); 
background = loadImage("spaceBackground.jpg"); 
background.resize(width,height); 
Rocket = new rocket(); 
} 

void draw() 
{ 
image(background, x, 0); //draw background twice adjacent 
image(background, x+background.width, 0); 
x -=4; 
if(x == -background.width) 
x=0; //wrap background 
Rocket.defender(); 
Rocket.move(); 
} 

In einer anderen Klasse eine Rakete nach oben zu machen versuche ich, und ab

class rocket { 
    float x; 
    float y; 
    float speedy; 
    boolean up; 
    boolean down; 

rocket(){ 
    x = 50; 
    y = 200; 
    speedy = 3; 
} 

void move() { 
if(up) 
{ 
    y = y - speedy; 
} 
if(down) 
{ 
    y = y + speedy; 
} 
} 

void defender(){ 
fill(255,0,0); 
rect(x,y,50,20); 
triangle(x+50,y,x+50,y+20,x+60,y+10); 
fill(0,0,100); 
rect(x,y-10,20,10); 
} 

void keyPressed(){ 
    if(keyCode == UP) 
    { 
    up = true; 
    } 
    if(keyCode == DOWN) 
    { 
    down = true; 
    } 
} 

void keyReleased(){ 
    if(keyCode == UP) 
    { 
    up = false; 
    } 
    if(keyCode == DOWN) 
    { 
    down = false; 
    } 
} 
} 

Die Rakete wird angezeigt, aber wird sich nicht bewegen . Ich habe alles versucht, was ich weiß, aber nichts funktioniert. Ich habe auch die Raketenklasse einfach als eigenständiges Projekt ausprobiert und die Rakete bewegt sich, also muss es etwas mit der Klasse zu tun haben. Ich bin ziemlich neu in der Programmierung, bitte denken Sie daran, danke im Voraus.

Antwort

0

Die Funktionen keyPressed() und keyReleased() (und alle anderen Ereignisfunktionen) müssen sich auf der Skizzenebene befinden, nicht innerhalb einer anderen Klasse. Wenn sie sich in einer anderen Klasse befinden, kann Processing sie nicht finden.

Also, was Sie tun müssen, ist die keyPressed() und keyReleased() Funktionen der Skizze bewegen, und dann Funktionen aufrufen auf Rocket Klasse (Klassennamen mit einem Großbuchstaben beginnen sollte, btw), ähnlich wie Sie‘ Rufen Sie rocket.defender() und rocket.move() (Variablennamen sollten mit einem Kleinbuchstaben beginnen) aus der Sketch-Ebene draw() Funktion.

+0

auch, wissen Sie, wie kann ich die Rakete zu beschränken, so dass es nicht aus dem Bildschirm herauskommen, während ich es auf und ab bewegen? –

+0

@AlexandrosConstantinides Sicher kannst du 'if' Statements verwenden, um einzuschränken, wenn du deine Rakete bewegst. Ich habe ein Tutorial über Animation in Processing [hier] (http://happycoding.io/tutorials/processing/animation) geschrieben, welches beinhaltet, dass die Animation so begrenzt wird, dass sie im Bildschirm bleibt. Wenn es immer noch nicht funktioniert, poste bitte eine [mcve] (nicht deine ganze Skizze, nur ein einzelnes Rechteck, das sich mit den Pfeiltasten bewegt) in eine neue Frage und wir gehen von dort weiter. Viel Glück. –

Verwandte Themen