所以Processing曾经有一个“框架”类,它允许一些多功能的功能。我正在尝试获取 PApplet 窗口在屏幕上的位置,但如果没有“frame”类,我似乎无法做到这一点。
旧方法:
int fX = frame.getX();
或
int fX = frame.getLocationOnScreen().x;
整个事情应该是动态的,因此在Processings setup() 中设置窗口位置不是一个选项。
希望有人能帮忙
您好!
最佳答案
您可能最好只使用旧的 frame
变量。
对于大多数此类情况,您应该使用新的 surface
变量,该变量的类型为 PSurface
。您可以查看 PSurface
here 的源代码。阅读该内容后,我们发现不幸的是,surface
变量无法让我们访问框架的位置。
由于您无法从 surface
变量获取该位置,因此您必须更深入地获取 native 组件(在默认情况下,一个SmoothCanvas
扩展了 awt Canvas
)。我通过查看可用的 PSurfaceAWT
源代码 here 找到了这一点。 .
该代码看起来有点恶心,因为您必须进行一些转换:
import processing.awt.PSurfaceAWT;
import processing.awt.PSurfaceAWT.SmoothCanvas;
void setup(){
size(200, 200);
}
void draw(){
background(0);
int x = ( (SmoothCanvas) ((PSurfaceAWT)surface).getNative()).getFrame().getX();
text("x: " + x , 20, 20);
}
关于Java 和处理 3.0 “frame” 类已弃用,是否有替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39107750/