Bonjour,
j'ai encore une question de noob pour vous les ami·e·s : comment dois-je déclarer mes variables OSC pour pouvoir les utiliser n'importe où dans mon sketch (notamment dans des fonctions propres à des classes) ?
void oscEvent(OscMessage theOscMessage) { String valeur=theOscMessage.addrPattern(); if (valeur.equals("/xy")) { float xOSC = (theOscMessage.get(0).floatValue())*width; float yOSC = (theOscMessage.get(1).floatValue())*height; } }
Hors ligne
Il faut les déclarer avant le setup(). De fait elles seront des variables globales.
Hors ligne
Merci Mushussu d'avoir pris le temps de me répondre.
C'était mon idée première : avant mon setup j'avais déclaré
import oscP5.*; import netP5.*; OscP5 oscP5; NetAddress myRemoteLocation; float xOSC; float yOSC; void setup() { size(600,150, P3D); oscP5 = new OscP5(this, 9000); myRemoteLocation = new NetAddress("127.0.0.1", 5001); background(0); etc...; } void draw() { blablabla...; } class Truc { float xA,yB; Truc(float xA, float yB) { blablabla...; } void update() { float a = xA+xOSC; float b = yB+yOSC; println(" OSC x: " +xOSC +" / OSC y: " +yOSC); // pour test... blablabla...; } } void oscEvent(OscMessage theOscMessage) { String valeur=theOscMessage.addrPattern(); if (valeur.equals("/3/xy")) { float xOSC = (theOscMessage.get(0).floatValue()); float yOSC = (theOscMessage.get(1).floatValue()); } }
mais les données ne passent pas ! le print me renvoie 0.0 pour les deux variables.
Hors ligne
C'est tout à fait normal, tu as bien déclaré tes variable globales xOSC et yOSC. Mais dans la méthode void oscEvent(OscMessage theOscMessage); tu déclares de nouveau des variables de même nom qui elles sont locales. Processing se dit que c'est de nouvelles variables. Enlève les float devant xOSC et yOSC dans la méthode oscEvent et tout devrait fonctionner.
Hors ligne
yes ! merci. ça marche et j'ai compris !!
Hors ligne