>

so 처리 는 "프레임"클래스를 사용하여 다양한 기능을 수행 할 수있었습니다. PApplet 창의 위치를 ​​화면에 표시하려고하는데 "frame"클래스가 없으면 할 수없는 것 같습니다.

구식 :

int fX = frame.getX();
or
int fX = frame.getLocationOnScreen().x;

모든 것이 역동적이어야하므로 Processings setup ()에서 창 위치를 설정하는 것은 옵션이 아닙니다.

누군가 도울 수 있기를 바랍니다

인사말! B

  • 답변 # 1

    오래된 frame 를 사용하는 것이 가장 좋습니다.  변수.

    이와 같은 대부분의 경우 새로운 surface 를 사용해야합니다   PSurface 유형의 변수 . 당신은 PSurface 의 소스를 볼 수 있습니다  이리. 그것을 읽고, 불행히도, surface  변수를 사용하면 프레임 위치에 액세스 할 수 없습니다.

    surface 에서 위치를 찾을 수 없으므로  변수를 사용하면 한 단계 더 깊이 들어가서기본구성 요소 (기본 경우 SmoothCanvas )를 가져와야합니다.  그것은 awt Canvas 를 확장 ). 나는 PSurfaceAWT 의 소스를 보면서 이것을 알아 냈습니다.  여기에서 사용 가능합니다.

    주조를해야하기 때문에 코드가 약간 거칠어 보입니다 :

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

  • 답변 # 2

    Kevin의 탁월한 답변 외에도 여기에는 P2D 와 동등한 기능을 사용하는 기능이 있습니다. , P3D  그리고 FX2D  렌더러 :

    void setup(){
      size(300,300,FX2D);
    }
    void draw(){
      background(0);
      text(getLocationOnScreen().toString(),10,15);
    }
    PVector getLocationOnScreen(){
      PVector location = new PVector();
      // JAVA2D
      if(surface instanceof processing.awt.PSurfaceAWT){
        java.awt.Frame frame = ( (processing.awt.PSurfaceAWT.SmoothCanvas) ((processing.awt.PSurfaceAWT)surface).getNative()).getFrame();
        java.awt.Point point = frame.getLocationOnScreen();
        location.set(point.x,point.y);
      }
      // P2D, P3D
      else if(surface instanceof processing.opengl.PSurfaceJOGL){
        com.jogamp.newt.opengl.GLWindow window = (com.jogamp.newt.opengl.GLWindow)(((PSurfaceJOGL)surface).getNative());
        com.jogamp.nativewindow.util.Point point = window.getLocationOnScreen(new com.jogamp.nativewindow.util.Point());
        location.set(point.getX(),point.getY());
      }
      // FX2D
      else if(surface instanceof processing.javafx.PSurfaceFX){
        javafx.scene.canvas.Canvas canvas = (javafx.scene.canvas.Canvas)((processing.javafx.PSurfaceFX)surface).getNative();
        javafx.geometry.Point2D point = canvas.localToScreen(0,0);
        location.set((float)point.getX(),(float)point.getY()); 
      }
      return location;
    }
    
    

    (가져 오기를 사용하면 코드 코드가 더욱 우아해졌지만 정규화 된 클래스 이름을 그대로두면 새 스케치에서 함수를 쉽게 복사/붙여 넣기/테스트 할 수 있습니다)

  • 이전 Windows 서버에서 PHP를 사용하여 Python 스크립트 실행
  • 다음 Django 템플릿 내에서 현재 URL을 얻는 방법은 무엇입니까?