Java:Leap Motion从void返回值

时间:2016-07-26 15:18:59

标签: java methods void leap-motion

我正在尝试使用Leap Motion让我的代码在0到255之间向上滚动(因此打印:1,然后是2,然后是cw圆上的3和acw圆上的3,2,1)。 / p>

手势的动作驻留在void onFrame()方法中。

每次检测到圆形手势时我都需要增加一个数字并输出每个数字。就目前而言,我的代码在背景中进行递增,并且只在我输入图形时计数(因此我的计数图形显示在第二个提示中)。这很糟糕,因为用户实际上无法看到他们提交给阈值提示的号码。

请帮助,我对此很新,这会减慢我的项目速度!

我提供了精简版课程,以突出问题所在。

听众课程:

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) {
            }
        }
    }
}

}

插件类(调用promptValue变量来填充提示符:

    IJ.setRawThreshold(imp, IJ.getNumber("prompt", (listener.getPromptValue())), IJ.getNumber("prompt", (listener.getPromptValue())), null);

非常感谢,

赖安

1 个答案:

答案 0 :(得分:0)

从OnFrame()返回一个值无济于事。 OnFrame由Leap Motion代码调用,即使您可以提供,也不会对该值执行任何操作。你需要的是一个改变提示值的功能 - 如果可能的话。然后OnFrame可以调用该函数。