비 UI 스레드에서 터치 좌표를 얻는 방법

기운찬

2 개의 스레드가있는 openGL 앱이있는 경우 (내가 생성하지 않은 경우 표준 '제공된'스레드입니다). 그 존재 :

  • GLRendering 스레드
  • 메인 / UI 스레드

그리고 내 렌더링 스레드에서 다음과 같이 스프라이트를 그립니다. (표시된 방법은 내 방법입니다)

sprite.draw(); //This will draw the sprite at it's own internal X and Y coordinates

이제 UI 스레드에서 현재 손가락 위치를 캡처합니다. (onTouchEvent (MotionEvent 이벤트) 내에서 다음이 발생합니다.) ...

case MotionEvent.ACTION_MOVE: {

    sprite.setX(event.getX());
    sprite.setY(event.setY());

}

그래서, 내 스프라이트는 손가락으로 화면 주위로 드래그 할 수있는 곳에 그려집니다.

그러나 분명히 두 스레드가 다음과 같이 '교대로'실행된다는 보장은 없습니다.

UI Thread : 손가락 위치 캡처 및 설정 (X : 10, Y : 10)

렌더러 스레드 : 10, 10에서 그리기

UI Thread : 손가락 위치 캡처 및 설정 (X : 22, Y : 31)

22, 31 등에서 렌더러 스레드 그리기 ...

위는 훌륭하지만 이것이 발생하면 어떻게됩니까?

UI Thread : 손가락 위치 캡처 및 설정 (X : 10, Y : 10)

렌더러 스레드 : 10, 10에서 그리기

Renderer Thread : Draw at 10, 10 << 손가락이 물리적으로 다른 위치로 이동하여 개체의 화면 위치와 화면의 손가락의 물리적 위치 사이에 오프셋이 발생하더라도 동일한 위치에 다시 그립니다.

UI Thread : 손가락 위치 캡처 및 설정 (X : 22, Y : 31)

22, 31 등에서 렌더러 스레드 그리기 ...

이것은 물체의 그림에서 '잘라 내기'를 유발하는 것처럼 보일 수 있습니다.

그래서, 내가 무엇을 요구하고있어,이되는 어떤 힘에 대한 방법은 어떻게 든 검색 할 렌더링 스레드 실제 현재의 물리적 위치 그것을 그립니다 전에 현재 다운 포인터 / 손가락을? 아니면 문제에 대한 다른 해결책이 있습니까? (문제는 렌더링 스레드가 항상 이전 위치가 아닌 현재 위치에 액세스해야한다는 것입니다.)

Kasra

짧은 대답은 아니오입니다!

발생한 문제는 병렬로 실행되는 두 개의 스레드로 인한 것이 아닙니다. 대신,

  • 프레임 속도가 너무 낮습니다
  • 움직임이 너무 빨라서 고르지 않게 보입니다.

첫 번째 문제에 대한 해결책은 앱을 프로파일 링하고 지연 시간을 줄이는 것입니다. 60fps의 공칭 프레임 속도에 도달 해보세요.

그러나 두 번째 문제에 대한 해결책은 작은 트릭 일뿐입니다. 정확히 터치 포인트가되도록 스프라이트의 위치를 ​​조정하는 대신 터치 포인트 쪽으로 이동하도록합니다 .

대략적인 구현은 다음과 같습니다.

case MotionEvent.ACTION_MOVE: {

    sprite.setNewX(event.getX());
    sprite.setNewY(event.setY());

}

스프라이트 클래스에 다음을 추가하십시오.

private int mNewX, mNewY;

public void setNewX(int x){
   mNewX = x;
}
public void setNewY(int y){
   mNewY = y;
}

Sprite 클래스의 그리기 메서드에 다음 두 줄을 추가합니다.

public void draw(){

    this.x = this.x + (int)(0.5 * (this.newX-this.x));
    this.y = this.y + (int)(0.5 * (this.newY-this.y));
// of course, you can get rid of the "this" keywords above. I just put them there for the sake of clarity.

// drawing stuff

}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Godot에서 두 노드 좌표를 비교하는 방법

분류에서Dev

CAShapeLayer에서 좌표를 얻는 방법

분류에서Dev

onmouseup에서 좌표를 얻는 방법?

분류에서Dev

래스터와 동일한 투영에서 점 좌표를 얻는 방법

분류에서Dev

웹 서비스에서 특정 가치를 얻는 방법

분류에서Dev

plabels Netlogo에서 패치 좌표를 표시하는 방법

분류에서Dev

phpmyadmin ui에서 1000 개의 레코드를 얻는 방법

분류에서Dev

터치 패드에서 손가락의 절대 위치 (x, y 좌표)를 얻는 방법은 무엇입니까?

분류에서Dev

마우스 좌표에서 정확한 픽셀 위치를 얻는 방법은 무엇입니까?

분류에서Dev

비 서버 설치에서 서버 MOTD를 얻는 방법

분류에서Dev

비 서버 설치에서 서버 MOTD를 얻는 방법

분류에서Dev

터치로 (0,0) 인 imageview의 중심 좌표 (x, y)를 얻는 방법

분류에서Dev

Url 아래에 열려 있는지도에서 위치 좌표를 얻는 방법

분류에서Dev

비누 메시지에서 가치를 얻는 방법?

분류에서Dev

다중 인덱스 데이터 프레임에서 위치를 얻는 방법

분류에서Dev

MKMapView의 현재 위치 좌표에서 새 위치 좌표를 신속하게 바꾸는 방법

분류에서Dev

API를 사용하여 SolidWorks에서 개체의 좌표 데이터를 얻는 방법

분류에서Dev

캔버스 커서 클릭 좌표를 얻는 방법

분류에서Dev

프레임 장면에서 마우스 클릭의 3D 좌표 위치를 아는 방법

분류에서Dev

파이썬에서 좌표를 얻는 방법?

분류에서Dev

Android Studio의 좌표에서 주소를 얻는 방법

분류에서Dev

좌표에서 도시를 얻는 방법?

분류에서Dev

좌표에서 도시를 얻는 방법?

분류에서Dev

JLabel에서 이미지의 X, Y 좌표를 얻는 방법

분류에서Dev

Java에서 Shape 객체의 x 좌표를 얻는 방법

분류에서Dev

이미지에서 투명도 좌표를 얻는 방법

분류에서Dev

파이 게임에서 이미지 좌표를 얻는 방법

분류에서Dev

미디어 위키에서 좌표를 얻는 방법

분류에서Dev

Custom view android에서 좌표를 얻는 방법

Related 관련 기사

  1. 1

    Godot에서 두 노드 좌표를 비교하는 방법

  2. 2

    CAShapeLayer에서 좌표를 얻는 방법

  3. 3

    onmouseup에서 좌표를 얻는 방법?

  4. 4

    래스터와 동일한 투영에서 점 좌표를 얻는 방법

  5. 5

    웹 서비스에서 특정 가치를 얻는 방법

  6. 6

    plabels Netlogo에서 패치 좌표를 표시하는 방법

  7. 7

    phpmyadmin ui에서 1000 개의 레코드를 얻는 방법

  8. 8

    터치 패드에서 손가락의 절대 위치 (x, y 좌표)를 얻는 방법은 무엇입니까?

  9. 9

    마우스 좌표에서 정확한 픽셀 위치를 얻는 방법은 무엇입니까?

  10. 10

    비 서버 설치에서 서버 MOTD를 얻는 방법

  11. 11

    비 서버 설치에서 서버 MOTD를 얻는 방법

  12. 12

    터치로 (0,0) 인 imageview의 중심 좌표 (x, y)를 얻는 방법

  13. 13

    Url 아래에 열려 있는지도에서 위치 좌표를 얻는 방법

  14. 14

    비누 메시지에서 가치를 얻는 방법?

  15. 15

    다중 인덱스 데이터 프레임에서 위치를 얻는 방법

  16. 16

    MKMapView의 현재 위치 좌표에서 새 위치 좌표를 신속하게 바꾸는 방법

  17. 17

    API를 사용하여 SolidWorks에서 개체의 좌표 데이터를 얻는 방법

  18. 18

    캔버스 커서 클릭 좌표를 얻는 방법

  19. 19

    프레임 장면에서 마우스 클릭의 3D 좌표 위치를 아는 방법

  20. 20

    파이썬에서 좌표를 얻는 방법?

  21. 21

    Android Studio의 좌표에서 주소를 얻는 방법

  22. 22

    좌표에서 도시를 얻는 방법?

  23. 23

    좌표에서 도시를 얻는 방법?

  24. 24

    JLabel에서 이미지의 X, Y 좌표를 얻는 방법

  25. 25

    Java에서 Shape 객체의 x 좌표를 얻는 방법

  26. 26

    이미지에서 투명도 좌표를 얻는 방법

  27. 27

    파이 게임에서 이미지 좌표를 얻는 방법

  28. 28

    미디어 위키에서 좌표를 얻는 방법

  29. 29

    Custom view android에서 좌표를 얻는 방법

뜨겁다태그

보관