2010-01-07 10 views
1

Je fais un jeu d'arcade en as3 et je veux dessiner des lignes pixely (non lissées par flash). Je dessine les pixels 'à la main' (pas avec lineTo de flash ou quoi que ce soit) sur un objet bitmapdata.Rendu de ligne parfait dans as3

Les lignes ne semblent pas tout à fait correctes, lorsque vous effectuez un zoom arrière, la ligne est rendue 2 pixels d'épaisseur sur certaines parties. Cependant, en zoomant, il est évident que l'algorithme est bon et qu'il ne double pas les pixels. Changer la qualité ne semble pas changer quoi que ce soit. Une idée de comment je peux obtenir des lignes parfaites de pixel?

g=new BitmapData(w,h,false,0x000000); 
var bmp:Bitmap=new Bitmap(g); 
addChild(bmp); 
//... 
Util.drawLine(x1,y1,x2,y2,0xFFFFFF,g); 

alt text

L'algorithme est pas pertinent car je sais du zoom dans son doublant pas vraiment, et depuis son dessin à un bitmap, il doit être établi par incréments de pixels. Mais c'est juste une version as3 de la 2ème énumérés sur this page

+0

Pouvez-vous fournir une capture d'écran de votre zoom arrière ou zoomé? Fournissez également le code pour Util.drawLine. – sberry

+0

que voulez-vous dire par un zoom arrière? Utilisation de la mise à l'échelle dans as3, ou avec votre navigateur ou quoi? – Ross

Répondre

0

Ok, je l'ai corrigé. Le flash était mis à l'échelle par le navigateur.

stage.scaleMode = StageScaleMode.NO_SCALE;

Était tout ce qui était nécessaire pour se débarrasser des artefacts.

0

si je ne me trompe pas les lignes en flash sont des chemins avec course et pas de remplissage. donc le problème est que le chemin est à la valeur exacte du pixel, mais le trait est divisé en 2 lignes (une gauche, une droite) chacune 0,5 pixel large (ou 2 pixels réels, comme nous les connaissons, large avec 0,5 alpha) je pense que le déplacement de la ligne + 0.5 résoudra le problème.

+0

ce serait le cas si j'utilisais lineTo avec des sprites ou des MovieClips, je rends à la main à un bitmap cependant. –