2009-05-06 10 views
4

Si j'ai un sprite avec lequel j'ai dessiné quelque chose, comment effacer une partie de ce que j'ai dessiné? De préférence, je pourrais utiliser drawRect() avec de la peinture "alpha = 0".effacement des graphiques sprite?

Cependant, je ne crois pas que la méthode beginFill() vous permet de définir une couleur RGBA (comme vous pouvez dans bitmapData). Le réglage alpha = 0 dans la méthode graphique de beginFill() ne fait vraiment rien - il ne dessine rien.

Dans mon cas d'utilisation particulier, le masquage n'est pas une option.

En outre, l'appel clear() n'est pas une bonne solution, car il efface tout.

Répondre

5

Malheureusement, vous ne pouvez pas faire exactement ce que vous espérez faire avec la classe Graphics. Bien que l'effacement puisse signifier que vous dessinez sur quelque chose que vous avez déjà dessiné avec la couleur d'arrière-plan, j'imagine que vous espérez "ramener la transparence" sur l'objet Graphics. Dessiner avec un alpha de 0 ne dessine "rien" - vous ne voyez pas ce que vous dessinez parce qu'il est entièrement transparent.

C'est ce que vous obtenez pour travailler avec des vecteurs plutôt qu'avec des bitmaps. Pour "effacer" une partie d'un vecteur signifie que vous créez un vecteur entièrement nouveau, quelque chose qui va prendre un peu de calcul plutôt que de simplement définir un pixel à une certaine valeur de couleur. Les graphiques ne fournissent pas cette fonctionnalité avancée, bien que vous puissiez certainement écrire vos propres fonctions pour le faire. : P

Une solution consiste à utiliser à la place bitmaps:
http://www.actionscript.org/forums/showthread.php3?t=187857
http://www.actionscripts.org/forums/showthread.php3?t=149021

Une autre est de se demander si vous pouvez mettre en œuvre ce que vous essayez de faire d'une manière différente; celui qui se prêterait à l'utilisation de clear().

0

Si vous souhaitez conserver une partie de votre dessin tout en effaçant d'autres parties, la seule route possible serait de dessiner en utilisant plusieurs sprites. Créez une image-objet pour chaque partie du dessin, puis sélectionnez l'image-objet que vous souhaitez effacer et laissez le reste. À part cela, il ne vous reste plus qu'à utiliser les données bitmap pour copier les sections, puis, après avoir utilisé l'option Effacer, dessinez de nouveau les sections copiées. (ceci serait difficile à implémenter dans un manoir complexe, essayez de copier simplement une zone courbe complexe!)

10

Vous pouvez réaliser ceci bien si vous n'avez pas besoin d'être capable d'interagir avec n'importe quels éléments sous votre Sprite.

Pour ce faire

  1. créer un objet de forme dans la forme que vous voulez et définissez sa propriété cacheAsBitmap à true
  2. définir votre propriété de Sprite cacheAsBitmap à true
  3. définir la propriété blendMode de votre forme pour
  4. ajouter la forme à la liste d'affichage de votre Sprite
+0

Cela m'aide beaucoup, merci ..:) ,, –