2010-06-21 9 views
1

Comment dessiner des lignes lisses avec actionscript 3 (en utilisant flex 4)?Comment dessiner des lignes lisses dans actionscript 3 (Flash)

Je veux dire: je fais quelque chose comme ceci:

 var grap:Graphics = this.display.graphics; 
     grap.lineStyle(8, 0xFF0000, 1, true, "normal", CapsStyle.ROUND); 
     grap.moveTo(180,330); 
     grap.lineTo(200,130); 

Mais le résultat ressemble à ceci:
http://sub.ited.nl/try/ :(
Les bords des lignes sont très croustillantes, comment puis-je améliorer cette ? surtout lors de l'élaboration de la ligne par une interpolation, il ressemble à un homme ivre marchant sur les trottoirs;) ...

le code tween pour tracer la ligne:

 var grap:Graphics = this.display.graphics; 
     grap.lineStyle(8, 0xFF0000, 1, true, "normal", CapsStyle.ROUND); 
     grap.moveTo(220,330); 
     new Tween(this, [220, 330], [240, 130]); 

Et dans la méthode onTweenUpdate:

 this.display.graphics.lineTo(values[0], values[1]); 

S'il vous plaît quelques conseils à ce sujet?

BTW: comment supprimer au mieux l'arrière-plan par défaut de l'objet flash? (le fond gris). J'ai dans mon index.mxml:

<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="600" 
addedToStage="start()" styleName="plain" backgroundImage="{null}"> 

Mais je vois souvent vacillante (en mode développement), ce qui signifie que je vois d'abord la valeur par défaut fond gris et un blanc ...

Merci d'avance

+1

Incidemment, vous voudrez peut-être faire une nouvelle question à propos de la chose d'arrière-plan, étiqueté comme "Flex" - puisque ce fond gris est dessiné par le cadre flexible, pas Flash lui-même. Le «vrai» fond de Flash lui-même est déterminé par la façon dont vous intégrez le SWF (c'est-à-dire un paramètre de vos balises 'object' et' embed', si vous écrivez du HTML). – fenomas

Répondre

2

Y a-t-il une raison de ne pas, à chaque itération, ignorer les progrès de la ligne et de la redessiner? Comme dans:

// inside tween update 
displayObj.graphics.clear(); 
displayObj.graphics.moveTo(180,330); 
displayObj.graphics.lineTo(values[0]); 
// i.e. only the end point is tweened 

Dans votre code actuel vous dessinez en fait beaucoup de lignes individuelles, donc tout ce que vous avez fait pour améliorer la douceur dépendraient délicatement sur les entrailles de la façon dont Flash rend, vous êtes probablement mieux redessiner toute la ligne chaque image.

+0

Oui, merci de m'avoir fait remarquer, complet oublie que ..: (... La version animée semble mieux maintenant (j'ai mis à jour la version en ligne dans le lien ci-dessus) Mais encore: comment puis-je rendre les bords plus lisses Ou est-ce le meilleur que je peux avoir? Ou cela dépend-il de l'affichage (je suis sur un écran HD 1920x1200) – edbras

Questions connexes