2013-02-08 2 views
0

J'ai un problème avec le suivi du mouvement d'une souris dans une esquisse de traitement lorsqu'elle est portée sur Javascript. Pour autant que je sache, le programme fonctionne bien, sauf qu'il n'activera pas mouseMoved, que ce soit en tant qu'événement ou en tant qu'opération logique. J'ai aussi essayé pMousex! = MouseX et cela ne fonctionnait pas non plus. De l'aide?Processing.js: ne suivra pas mouseMoved()?

color[] palette = new color[5]; 
color c1; 
color c2; 
color c3; 
color c4; 
color c5; 
color bgColor; 

int swarmSize; 
int xVariance; 
int yVariance; 
int maxSize; 
int maxOpacity; 
int maxStroke; 

//Non-definables for swarm gen 
int sideMod; 
int sSize; 
int opacity; 
int stroke; 

void setup() { 
size(600, 400); 

c1= #BF2633; 
c2= #A6242F; 
c3= #D9CEAD; 
c4= #C0B18F; 
c5= #011C26; 

bgColor = color(23, 76, 79); 

palette[0] = c1; 
palette[1] = c2; 
palette[2] = c3; 
palette[3] = c4; 
palette[4] = c5; 

swarmSize = 1; 
xVariance = 60; 
yVariance = 60; 
maxSize = 30; 
maxOpacity = 255; 
maxStroke = 4; 

}

void draw() { //tried tracking pMouse != mouse here, no dice 
} 

void drawSwarm() { 
    for (int i = 0; i < swarmSize; i++) 
{ 
if (random(1, 10) < 5) { 
    sideMod = -1; 
} 
else { 
    sideMod = 1; 
} 
stroke = int(random(1, maxStroke)); 
sSize = int(random(1, maxSize)); 
opacity = int(random(0, maxOpacity)); 

strokeWeight(stroke); 
stroke(palette[int(random(1, 5))], opacity); 
fill(palette[int(random(1, 5))], opacity); 

// strokeWeight(int(random(1, 7))); 
ellipse(mouseX + int(random(1, xVariance)) * sideMod, mouseY+ int(random(1, yVariance)), sSize, sSize); 

}}

void mouseMoved() { //Doesn't work in processing.js 
drawSwarm(); 
} 

void keyPressed() { 
background(bgColor); 
} 

Répondre

0

Le code suivant fonctionne très bien (voir http://jsfiddle.net/qPpRQ/)

int x,y; 
void draw() { 
    point(x,y); 
} 
void mouseMoved() { 
    x = mouseX; 
    y = mouseY; 
    redraw(); 
} 

habituellement, dessiner des instructions dans un gestionnaire de la souris ne fonctionne pas très bien, vous voulez généralement configurer votre état en fonction de la position de la souris, puis appelez redraw(), avec le code qui dessine réellement les choses à l'écran appelé, pas de votre événement gestionnaire.

Questions connexes