2010-02-23 4 views
0

Je crée une application de tableau blanc simple dans ActionScript 3. La plupart des applications de tableau blanc ou de peinture d'ActionScript ont tendance à utiliser un événement interval, timer, mouseMove ou enterFrame pour suivre la position de la souris. points suivis. Ce que j'essaye de réaliser est la belle ligne peinte lisse qu'un programme comme Photoshop peut rendre tout en peignant avec l'outil de brosse. Dans Photoshop, peu importe à quelle vitesse vous déplacez la souris autour de la toile, les lignes peintes finissent toujours avec un joli bord incurvé lisse. Dans mon application, en utilisant l'une des méthodes mentionnées précédemment, il y a toujours une latence entre les appels de fonction qui rendent le pinceau à la scène. Ainsi, l'utilisation de l'une quelconque de ces techniques peut entraîner une ligne angulaire aiguë lorsque vous déplacez la souris très rapidement d'une manière circulaire.Comment puis-je obtenir une courbe peinte lisse pour une application de tableau blanc?

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

Répondre

0

Ma solution a fini par être une combinaison de deux techniques. Ce que j'ai fini par faire était de montrer un aperçu du chemin que le pinceau est utilisé/peint. Comme cela se produit, je rassemble tous les points entre les intervalles. Ensuite, lorsque l'utilisateur relâche le bouton de la souris, je dessine un coup de pinceau courbe plus précis en utilisant une courbe de bezier quadratique entre tous les points collectés.

0

Alors, comment dessinez-vous vos lignes si vous n'utilisez pas l'API graphique? (vous pouvez regarder la fonction lineBitmapStyle de l'API graphique). Ce que je ferais, cependant, indépendamment de 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) courbe le chemin . Avez-vous lu sur les courbes de Bézier? (http://en.wikipedia.org/wiki/B%C3%A9zier_curve)

+0

Je dessinais des "lignes" à chaque intervalle en rendant un bitmap de sprites ajouté à la liste d'affichage. J'utilise cette technique parce que tous les pinceaux ne sont pas des lignes mais parfois une forme étrange. –

+0

Bien que le chemin du pinceau soit toujours mappé à une ligne - peut-être que cela vous aiderait à dessiner ces chemins (comme mesure de débogage), puis mapper les valeurs x, y de la forme du pinceau réel à ce chemin. – quoo

+0

Quelqu'un pourrait-il clarifier pourquoi cela a été downvoted? – quoo

-2

Je pense que la seule façon d'obtenir un meilleur résultat est d'utiliser une fréquence d'images plus élevée 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.

Questions connexes