2015-01-01 4 views
1

나는 InputProcessor LibGDX 클래스를 사용하여 그림 그리기를 시도합니다. 그러나 아무것도 그려지지 않습니다! LibGDX에서 render() 클래스가 아닌 다른 장소에서 텍스처를 그릴 수 있습니까?imputProcessor 클래스에서 텍스처를 그리는 방법은 무엇입니까? LibGDX

내가 에 그리면 예, 렌더링() 클래스가 확인 그려,하지만 난 InputProcessor touchDragged처럼, 다른 곳에서 그릴 수 있습니까? 여기

는이를 달성하는 방법 .. 그것은 뭔가 게재해야

내 코드

public class mm_imput implements InputProcessor { 

SpriteBatch batch=new SpriteBatch(); 
Texture pixel=new Texture("something.png"); 

    @Override 
    public boolean touchDragged (int x, int y, int pointer) { 

     drawSomething(); 

    } 
    void drawSomething() { 
     batch.begin(); 
     batch.draw(pixel, 100, 100, 100, 100); 
     batch.end(); 
    } 

} 내가 마우스를 드래그 할 때마다 무엇입니까?

+0

필 로이에 의해 제안 된 솔루션이 좋다고 생각합니다. InputProcessor를 호출하면 모든 프레임이 호출되기 전에 인터페이스의 헤더에서 읽을 수 있습니다. InputProcessor가 키보드와 터치의 입력 이벤트를 사용합니다. 화면 (바탕 화면의 마우스). 이것을 위해 * {link Input # setInputProcessor (InputProcessor)} 메소드로 등록해야합니다. * {link ApplicationListener # render()}를 호출하기 전에 각 프레임을 호출합니다. –

+0

MVC는 가장 간단한 디자인 패턴에 대해 들어 봤습니까? 이 패턴으로 만 코드를 디자인해야하지만, InputProcessor에서 무언가를 그리는 것은 좋지 않다는 것을 의미하지는 않습니다. – nikoliazekter

답변

1

일괄 처리는 Screen 클래스의 Render 메서드에 있어야합니다.

이 링크에서 당신은 내가 무슨 말을하는지 볼 수 있습니다 :

https://github.com/littletinman/Hype/blob/master/Hype/core/src/com/philiproyer/hype/screens/Details.java가 나는 렌더링 방법으로, 메인 화면 클래스가 있습니다. InputProcessor 인터페이스를 구현 중입니다.

터치가 중단 된 상태에서 렌더링 방법을 사용하는 것이 좋습니다.

public void render(float delta) { 

    Gdx.gl.glClearColor(0, 0, 0, 1); // Clear the screen with a solid color 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    if(isTouching == true) { // check for touching 
     batch.begin(); 
     batch.draw(pixel, 100, 100, 100, 100); 
     batch.end(); 
    } 
} 

다음, 터치 다운 방법

public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
    isTouching = true; // Set boolean to true 
    return false; 
} 

것은 당신이 당신의 손질 방법

public boolean touchUp(int screenX, int screenY, int pointer, int button) { 
    isTouching = false; // Set boolean to false 
    return false; 
} 

하자에 다음과 같은 감동을 중지 할 때 다시 설정되어 있는지 확인하려면 다음과 같이 뭔가를 추가 아무것도 명확하지 않은지 나에게 안다. 행운을 빌어 요!

+0

배치 방법은 반드시 Render 방식이어야합니다. 그것은 다른 곳에서 끌어낼 수 없습니까? – ShoulO

+0

글쎄, 렌더 메소드에서 화면을 지우면 그 전에 그린 (입력 리스너 포함) 모든 것이 지워질 것입니다. 엄밀히 말하자면 반드시 render 메소드에서 화면을 지우지 않아야합니다. * render 메소드 (또는 render 메소드 내에서 호출되는 메소드)를 렌더링하는 것이 복잡하지 않을 것입니다 * . – Xoppa

관련 문제