Question

Je construis une application simple de tableau blanc dans ActionScript 3. La plupart des applications de tableau blanc ou peinture dans ActionScript ont tendance à utiliser un intervalle, minuterie, événement mouseMove ou un événement enterFrame pour suivre les lignes de position de la souris et de la peinture ou des brosses entre les deux les points suivis.

Ce que je suis en train de réaliser est la ligne peinte lisse agréable qu'un programme comme Photoshop peut rendre tout en peignant avec l'outil pinceau. Dans Photoshop, peu importe comment vous déplacer rapidement la souris autour de la toile, les lignes peintes finissent toujours avec une belle arête courbe lisse. Dans mon application, en utilisant l'une des méthodes mentionnées avant, il y a toujours temps d'attente entre les appels de fonction qui rendent le pinceau à la scène. Ainsi, en utilisant l'une de ces techniques peut entraîner une ligne forte acculée lors du déplacement de la souris très rapidement d'une manière circulaire.

Ce n'est pas une surprise pour moi, je n'ai aucune idée comment je pourrais obtenir une ligne plus lisse comme l'outil pinceau de Photoshop. Rappelez-vous, les brosses pour mon application sont principalement basées sur des formes et ne pas ou ne peuvent utiliser l'API de dessin pour tracer des lignes se poursuit. En d'autres termes, graphics.curveTo () n'est pas une option. Je rends également les sprites ou formes générées par les brosses à une instance BitmapData.

Était-ce utile?

La solution 2

Ma solution a fini par être une combinaison de deux techniques. Ce que je fini par faire était montrant un aperçu du chemin que la brosse est utilisée / peignais. Comme cela arrive je collectionne tous les points entre les intervalles. Ensuite, lorsque l'utilisateur relâche le bouton de la souris, je peins un coup de pinceau plus précis, courbe en utilisant une courbe de Bézier quadratique entre tous les points collectés.

Autres conseils

Alors, comment vous dessinez vos lignes si vous n'êtes pas en utilisant l'API graphique? (Vous voudrez peut-être regarder la fonction lineBitmapStyle de l'API graphique).

Ce que je ferais, bien que, quelle que soit la méthode de dessin, est d'estimer le chemin de la brosse entre les deux points que vous avez, en utilisant peut-être les points précédents pour déterminer de quelle manière (et combien) à la courbe du chemin. Avez-vous lu sur des courbes de Bézier? ( http://en.wikipedia.org/wiki/B%C3%A9zier_curve)

Je pense que la seule façon d'obtenir un meilleur résultat, est d'utiliser un framerate plus élevé pour votre flash-movie. De cette façon, il y a plus de contrôles par seconde, ce qui devrait rendre la ligne plus lisse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top