2017-01-04 1 views
1

私は現在押されているすべてのマウスボタンをループしたいので、ボタン単位のドラッグシステムを実装できます。 LibGDXでこれを行う方法はありますか?LibGDXで押されているすべてのマウスボタンを取得する方法は?

例のユースケース:

@Override 
public boolean touchDragged(int screenX, int screenY, int pointer) 
{ 
    Vector3 prev = obtain(Vector3.class); 
    Vector3 cur = obtain(Vector3.class); 

    prev.set(dragX, dragY, 0); 
    cur.set(screenX, screenY, 0); 

    screen.getCamera().unproject(prev); //unprojecting previous position 
    screen.getCamera().unproject(cur); //unprojecting current position 

    for(int button : getPressedButtons()) 
    { 
     drag((int)cur.x, (int)cur.y, (int)(cur.x - prev.x), (int)(cur.y - prev.y), button); //calling my own drag method that support mouse buttons 
    } 

    free(prev); 
    free(cur); 
    dragX = screenX; 
    dragY = screenY; 
    return true; 
} 

答えて

2

あなたはGdx.inputにisButtonPressed()を呼び出すことができます。ボクシングと配列の割り当てを避けたい場合は、長時間の方法を繰り返す必要があります:

private final IntSet pressedButtons = new IntSet(5); 
// There are five possible buttons (See com.badlogic.gdx.Input.Buttons) 

void updatePressedButtons(){ 
    pressedButtons.clear(); 
    for (int i=0; i<5; i++){ 
     if (Gdx.input.isButtonPressed(i)) pressedButtons.add(i); 
} 

IntSetIterator iterator = pressedButtons.iterator(); 
while (iterator.hasNext){ 
    drag((int)cur.x, (int)cur.y, (int)(cur.x - prev.x), (int)(cur.y - prev.y), iterator.next()); 
} 

(またはJava 8のPrimitiveIteratorを使用)

関連する問題