En utilisant les touches fléchées et WASD simultanément

Je suis en train d'élaborer une partie à deux joueurs en Traitement (en cours d'exécution sur Java). Un utilisateur aura le contrôle de son personnage en utilisant les touches WASD et l'autre, le contrôle de mouvement en utilisant les touches fléchées. Le problème que j'ai c'est que l'utilisation keyPressed nie WASD lorsque les flèches sont pressés et vice versa. J'ai été déconner avec elle pour un temps très long. Quelqu'un sait-il d'un travail autour ou remarquez quelque chose que je fais mal?

//global variables
int wide = 600; //canvas width
int tall = 600; //canvas height
int s = 50; //player size
float speed = 2.5; //player movement speed
//colors
int redColor = #CB4646; //player 1 color
int blueColor = #4652CB; //player 2 color
int backgroundColor = #DBE3B3; //background color
float player1X = 600/3-s;  //HOW COME width/3 DOESN'T WORK??????????
float player2X = 600*2/3;
float playerY = 600/2-(s/2);
//players
Player player1 = new Player(player1X, playerY, s, speed, "wasd", redColor); //player 1
Player player2 = new Player(player2X, playerY, s, speed, "arrows", blueColor); //player 2
//setup
void setup(){
background(backgroundColor);
size(wide, tall);
smooth();
println(player2.controls);
}
//draw
void draw(){
background(backgroundColor);
player1.usePlayer();
player2.usePlayer();
}
class Player{
//class variables
float x; //x position
float y; //y position
int s; //size
float speed; //speed
String controls; //controls
int colors; //player color
char keyControls [] = new char [4];
//construct
Player(float tempX, float tempY, int tempS , float tempSpeed, String tempControls, int tempColors){
x = tempX; 
y = tempY; 
s = tempS; 
speed = tempSpeed; 
controls = tempControls; 
colors = tempColors; 
}
void usePlayer(){
//draw player
fill(colors);
rect(x, y, s, s);
//move player
keyPressed();
//wraparound
boundaries();
}
void keyPressed(){
//sets controls for wasd
if(controls == "wasd"){ 
if(key == 'w' || key == 'W'){ 
y -= speed; //move forwards
}
if(key == 's' || key == 'S'){
y += speed; //move backwards
}
if(key == 'd' || key == 'D'){
x += speed; //move right
}
if(key == 'a' || key == 'A'){
x -= speed; //move left
}
}
//sets controls for arrows 
if(controls == "arrows"){ 
if(key == CODED){
if(keyCode == UP){ 
y -= speed; //move forwards
}
if(keyCode == DOWN){
y += speed; //move backwards
}
if(keyCode == RIGHT){
x += speed; //move right
}
if(keyCode == LEFT){
x -= speed; //move left
}
}  
}  
}
//pacman style wraparound
void boundaries(){
if(x == width) x = 2;
if(y == height) y = 2;
if(x == 0) x = width-s;
if(y == 0) y = height-s;
}
}
Est-ce lié au fait que les claviers ne pouvez pas enregistrer plus de 2 à 6 (selon lesquelles) touches à la fois?
Je ne pense pas car il ne fonctionne pas lorsque j'appuie sur seulement deux en même temps.
Remarque ce n'est pas réellement un Java question, mais un Traitement de la question. Le traitement est très spécifique de l'API avec un peu différente programmign modèle de Java (il se réécrit en java pour une utilisation hors connexion dans une JVM, mais il est réécrit pour JavaScript lors de l'utilisation en ligne dans un navigateur, par exemple)
merci pour l'info, je ne savais pas que! Je vais m'abstenir de poster le Traitement des questions avec Java balises dans l'avenir.

OriginalL'auteur Brannon | 2013-02-12