T
TM_
Neues Mitglied
- 1
Hallo,
ich habe ein Problem mit der scale(float, float) Methode der Klasse Canvas. Damit soll eine Grafik (.svg) vergrößert werden. Doch alle Sprites die danach gezeichnet werden, zittern ein wenig auf und ab, sobald sich die Größe ändert. Hier der Code:
Bei size handelte es sich um den Typ double. Habe es später zu float geändert, das hat aber leider nicht geholfen. Es liegt tatsächlich an der Scale methode, denn wnn ich diese ausklammere zittert nichts. Genauso ist es anders herum, wenn translate aus ist und dann scale wieder aktiv gemacht wird, dann tritt wieder dieses Zittern auf. Das seltsame ist nur, dass es nach einer Bewegung aussieht und nicht nach einer Größenskalieren, weshalb eine fehlerhafte Translation naheliegender wäre. Ic hbin echt ratlos, denn dieser kleine lästige Fehler hat mich schon de nganzen Tag gekostet und egal was ich auch ausprobiere, nichts hilft. Ebenso finde ich nichts im Internet, ich weiß ja auch nicht so richtig wonach ich suchen soll :/
Also ich bin für alle Vorschläge dankbar.
Nochmal ne genauerer Beschreibung wie das ganze abläuft: Es gibt mehrere Sprites, darunter ein Spielbarer Sprite und das momentane Problem-Sprite. Dieses verändert seine größe. Size wird dabei stets auf die Distanz zum spielbaren Sprite gesetzt. Wenn man die Spielfigur nun über den Bildschirm bewegt sieht man, dass alle anderen Sprites ein wenig zittern. Aber auch nur manchmal in einem völlig unregelmäßigen Muster, aber immer noch sehr häufig. Ic hschließe auf eine Fehlerhaft skallierung, da aber eigentlich keine Zahlen mit unendlich Nachkommastellen entstehen dürfte das nicht passieren. Mögliche Werte für size liegen im Intervall (1;370), Seitdem das Problem bekannt ist wird size nun auch immer gerundet. Für scale entstehen also nie Dezimalzahlen mit mehr als 2 Nachkommastellen.
EDIT:
Warum ich das überhaupt so mache: Die meisten Sprites sind Bitmaps und können so ohne den Canvas zu verändern an jede Stell gemalt werden. Für SVGs muss der Canvas jedoch transformiert werden. Vorher war auch diese Grafik eine Bitmap, da es jedoch zu laggs kam, sobald die Grafik zu groß wurde, bin ich auf SVG umgestiegen. Läuft nun immer flüssig, nie wieder laggs, aber wie gesagt ein unschönes, wenn auch kaum auffälliges, Zittern/Ruckeln/Wackeln.
ich habe ein Problem mit der scale(float, float) Methode der Klasse Canvas. Damit soll eine Grafik (.svg) vergrößert werden. Doch alle Sprites die danach gezeichnet werden, zittern ein wenig auf und ab, sobald sich die Größe ändert. Hier der Code:
Code:
float scale = (size/100 );
myView.testString = "scale: " + scale;
pCanvas.translate((float) (xpos - (width * (size / 100*sizeFak) / 2)),
(float) (ypos - (height * (size / 100*sizeFak) / 2)));
pCanvas.scale(scale, scale);
svg.renderToCanvas(pCanvas);
pCanvas.scale(1/scale, 1/scale);
pCanvas.translate((float) (-1*(xpos - (width * (size / 100*sizeFak) / 2))),
(float) (-1*(ypos - (height * (size / 100*sizeFak) / 2))));
Also ich bin für alle Vorschläge dankbar.
Nochmal ne genauerer Beschreibung wie das ganze abläuft: Es gibt mehrere Sprites, darunter ein Spielbarer Sprite und das momentane Problem-Sprite. Dieses verändert seine größe. Size wird dabei stets auf die Distanz zum spielbaren Sprite gesetzt. Wenn man die Spielfigur nun über den Bildschirm bewegt sieht man, dass alle anderen Sprites ein wenig zittern. Aber auch nur manchmal in einem völlig unregelmäßigen Muster, aber immer noch sehr häufig. Ic hschließe auf eine Fehlerhaft skallierung, da aber eigentlich keine Zahlen mit unendlich Nachkommastellen entstehen dürfte das nicht passieren. Mögliche Werte für size liegen im Intervall (1;370), Seitdem das Problem bekannt ist wird size nun auch immer gerundet. Für scale entstehen also nie Dezimalzahlen mit mehr als 2 Nachkommastellen.
EDIT:
Warum ich das überhaupt so mache: Die meisten Sprites sind Bitmaps und können so ohne den Canvas zu verändern an jede Stell gemalt werden. Für SVGs muss der Canvas jedoch transformiert werden. Vorher war auch diese Grafik eine Bitmap, da es jedoch zu laggs kam, sobald die Grafik zu groß wurde, bin ich auf SVG umgestiegen. Läuft nun immer flüssig, nie wieder laggs, aber wie gesagt ein unschönes, wenn auch kaum auffälliges, Zittern/Ruckeln/Wackeln.
Zuletzt bearbeitet: