2009-06-29 2 views
0

Ich habe eine Bitmap in Flash geladen, für ein 2D-Spiel. Die Bitmap stellt ein Zeichen dar und rotiert, wenn der Benutzer die Tasten A (links) oder D (rechts) verwendet. Das Problem, das ich habe, ist, dass die Grenze des Bildes hässlich wird, während man rotiert, man kann "Pixel" sehen (man kann immer Pixel sehen, aber ich hoffe du verstehst, was ich meine).Drehung im Blitz, wodurch Bildränder "pixelig" aussehen, wie wird es repariert?

Wie kann ich das in ActionScript 3 beheben, vielleicht den Rotationsalgorithmus ändern oder das Bild nach der Rotation "reparieren"? Oder sollte ich das Bild anders speichern/rendern in zB. Photoshop vor der Verwendung mit Flash?

Update: Beachten Sie, dass sich der Hintergrund des Spiels ständig ändert.

Vielen Dank im Voraus.

Antwort

2

Sie könnten einen einfachen Antialias entlang der Kanten versuchen, indem Sie das Pixel, das sich dort befindet, und das Pixel, das Sie überlagern, addieren. Sie können sich Wu antialiasing für an example ansehen, die Sie als Startpunkt verwenden könnten.

+0

das ist wirklich die nukleare Option. Es gibt wirklich keine Notwendigkeit, dies in etwas wie Flash zu tun, der im Grunde gemacht wird, um Dinge zu skalieren und zu drehen. – grapefrukt

+0

Ich bin kein Flash-Programmierer - da das OP gefragt hat, habe ich nicht gedacht, dass es eine Bibliotheksfunktion gibt, die das für Sie tun würde. –

3

Wenn das Bild eine externe Last (Loader-Klasse), dann können Sie schreiben:

Bitmap(myLoader.content).smoothing=true; 

Wenn es intern ist (seine in der Bibliothek) können Sie die Bibliothek Bitmap nach rechts benötigen klicken> Eigenschaften und aktivieren Sie " Glättung ". Plus, wenn Sie es als BitmapData- sind instanziiert wird, dann müssen Sie dies tun:

var bmp:BitmapData=new LibraryBitmap(0,0); 
var bitmap:Bitmap=new Bitmap(bmp,"auto",true); //the third argument is smoothing 

Prost ...

1

Ein kurzer Hinweis: Bitmap Rotation ist langsam, so dass während der gam Laden e, es könnte eine gute Idee sein, Charaktere zu nehmen, die sich oft drehen oder häufig sind, sie alle 1 Grad im Spiel zu drehen, BitmapData.draw zu verwenden und sie auf ein Array (oder einen Vektor in FP10) zu schieben , wenn möglich) und dann diese Bitmaps verwenden.

YAY, Run-on-Sätze!

Happy Coding! :-)

Verwandte Themen