2012-04-14 10 views
1

in PlayN, wenn ich eine root-Ebene skaliert habe (z. B. Skala von 2,0), wenn ich einen Mauspunkt auf dem Bildschirm 10,10 erkennen und es auf Punkt zeichnen Bildschirm, der Punkt, der gezeigt wird, ist zweimal die Entfernung, wie ich auf dem OS-Mauspunkt sah.PlayN, Punkt [x, y] Ort mit skalierter Ebene

Was ich möchte, ist das Objekt, das ich ziehe in genau der gleichen Entfernung bewegen, wie ich meinen OS-Mauszeiger bewegen.

Gibt es eine Koordinaten-Map-Funktion, die meine Mauseingabe X/Y meinem logisch skalierten Koordinatensystem zuordnet?

Danke.

Antwort

1

Sie haben zwei Möglichkeiten. Sie können Ihre Pointer.Listener auf der Root-Ebene registrieren und Pointer.Event.localX/Y verwenden Sie die Maus Koordinate in die Ebene des Koordinatensystems zu erhalten:

graphics().rootLayer().addListener(new Pointer.Adapter() { 
    public void onPointerStart(Pointer.Event event) { 
     // use event.localX() and event.localY() here 
    } 
}); 

Oder Sie können eine globale Pointer.Listener registrieren und verwenden Layer.Util die Punkte manuell zu übersetzen:

pointer().addListener(new Pointer.Adapter() { 
    public void onPointerStart(Pointer.Event event) { 
     Point local = Layer.Util.screenToLayer(graphics().rootLayer(), event.x(), event.y()); 
     // use local.x and local.y here 
    } 
}); 
Verwandte Themen