2009-06-29 12 views
0

J'ai un bitmap chargé en flash, pour un jeu 2D. Le bitmap représente un caractère et est en rotation lorsque l'utilisateur utilise les touches A (gauche) ou D (droite). Le problème que j'ai est que la bordure de l'image devient moche en tournant, vous pouvez voir "pixels" (vous pouvez toujours voir les pixels, mais j'espère que vous comprenez ce que je veux dire).Rotation dans le flash provoquant des images "pixely", comment réparer?

Comment puis-je résoudre ce problème dans ActionScript 3, peut-être changer l'algorithme de rotation ou "réparer" l'image après la rotation? Ou devrais-je enregistrer/rendre l'image différemment dans par exemple. Photoshop avant de l'utiliser avec Flash?

Mise à jour: notez que l'arrière-plan du jeu change constamment.

Merci d'avance.

Répondre

2

Vous pouvez essayer un antialias simple le long des bords en additionnant le pixel qui est là et le pixel que vous allez superposer. Vous pouvez jeter un oeil à Wu antialiasing pour an example que vous pourriez utiliser comme point de départ.

+0

c'est vraiment l'option nucléaire. il n'y a vraiment pas besoin de faire cela dans quelque chose comme le flash qui est essentiellement fait pour mettre à l'échelle et faire tourner les choses. – grapefrukt

+0

Je ne suis pas un programmeur flash - puisque l'OP demandait je ne pensais pas qu'il y avait une fonction de bibliothèque qui ferait cela pour vous. –

3

Si l'image est une charge externe (classe Loader), alors vous pouvez écrire:

Bitmap(myLoader.content).smoothing=true; 

Si elle est interne (son dans la bibliothèque), vous devez Clic droit sur le bitmap de la bibliothèque> propriétés et activer " Lissage ". De plus, si vous instancier comme BitmapData, vous devez faire ceci:

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

... Vive

1

Une note rapide: rotation Bitmap est lent, donc lors du chargement du gam e, cela peut être une bonne idée de prendre des caractères qui tournent souvent, ou sont communs, les faire pivoter à tous les 1 degrés possibles dans le jeu, utiliser BitmapData.draw, et le pousser sur un tableau (ou un vecteur dans FP10 , si possible), puis utilisez ces bitmaps.

YAY, phrases en cours!

Bonne codification! :-)

Questions connexes