J'essaye de faire défiler mon code entre 0 et 255 en utilisant le Leap Motion (donc j'imprime: 1, puis 2, puis 3 sur les cercles cw et 3, 2 , 1 sur les cercles d'acw).Java: Leap Motion retourne la valeur de void
Les actions du geste résident dans une méthode void onFrame().
Je dois incrémenter un nombre chaque fois qu'un mouvement de cercle est détecté et sortir chaque nombre unique. À l'heure actuelle, mon code fait l'incrémentation en arrière-plan et ne compte que lorsque j'entre la figure (ainsi mon chiffre compté est affiché dans la deuxième invite). C'est mauvais parce que l'utilisateur ne peut pas réellement voir quel nombre ils commettent à l'invite de seuil.
S'il vous plaît, aidez, je suis assez nouveau à cela et ça ralentit mon projet!
J'ai fourni des classes réduites pour mettre en évidence l'origine du problème.
classe Listener:
public class ImageJListener extends Listener {
public Robot robot;
public int promptValue;
// potentially look into atomic objects and non atomic objects in case this has a threading issue
public ImageJListener() {
this.promptValue = 0;
}
public int getPromptValue() {
return this.promptValue;
}
...
public int onFrame(Controller controller) {
com.leapmotion.leap.Frame frame = controller.frame();
for (Gesture gesture : frame.gestures()) {
if (gesture.type() == Type.TYPE_CIRCLE) {
CircleGesture circle = new CircleGesture(gesture);
if (circle.pointable().direction().angleTo(circle.normal()) <= Math.PI/4) {
promptValue++;
return promptValue;
} else {
promptValue--;
return promptValue;
}
} else if (gesture.type() == Type.TYPE_KEY_TAP) {
KeyTapGesture Tap;
Tap = new KeyTapGesture(gesture);
try {
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
} catch (AWTException awt) {
}
}
}
}
}
classe Plugin (qui appelle la variable promptValue pour remplir l'invite:
IJ.setRawThreshold(imp, IJ.getNumber("prompt", (listener.getPromptValue())), IJ.getNumber("prompt", (listener.getPromptValue())), null);
Un grand merci à l'avance,
Ryan
Je pensais utiliser la classe Observable pour pomper les mises à jour - pensez-vous que cela le couperait? –
Il semble exagéré d'appeler une seule fonction, mais si vous prévoyez d'envoyer plus de données que ce seul entier, alors peut-être que cela en vaut la peine. Je ne suis pas vraiment un mec Java, cependant, il est stupide pour moi de vous donner des conseils de style Java. –