2009-10-08 5 views
0

J'ai une image basée et quelques sprites au-dessus du clip movieclip de basd ... Quelques-uns des sprites peuvent être dessinés par l'utilisateur utilisant l'API graphique dans actionscript 3. Je peux dessiner des choses sur le sprites mais je ne peux pas créer une gomme comme une brosse qui peut enlever une partie des dessins non désirés. J'essayer d'utiliser Alpha mais pas cela ne fonctionne pasProblème avec le dessin d'effacement de l'actionScript 3

J'ai googlé à ce sujet et trouver la solution:

1) lineBitmapStyle ... Cette solution est le meilleur coz je mes sprites peuvent être déplacé donc si j'utilise linebitmapstyle, il dessine le pixel de l'image vers l'image-objet mais si l'image-objet est déplacée, le pixel dessiné ne changera pas.

2) Masking peut ne pas fonctionner pour moi non plus ....

Quelle est la meilleure façon de créer la gomme

+0

Simon prochaine fois que vous pouvez vous envoyer le code de travail vous. –

Répondre

3

Vous pouvez plutôt vouloir utiliser un Bitmap pour faire des choses plus faciles à manipuler (sauf si vous avez besoin de faire des graphiques vectoriels évolutifs bien sûr!). Pour dessiner des formes, vous pouvez toujours utiliser l'API graphique pour créer les formes.

Pour ce faire, instancier pour créer les graphiques et les « copier » un sprite « factice » (ou d'une autre mise en œuvre IBitmapDrawable) à la BitmapData la fonction bitmapData.draw(). De cette façon, vous pouvez par exemple dessiner avec l'option BlendMode.ERASE afin de supprimer les pixels de la forme.

Exemple (à partir du haut de mon esprit):

// creates a bitmap data canvas 
var bitmapData:BitmapData = new BitmapData(500, 500); 

// creates a bitmap display object to contain the BitmapData 
addChild(new Bitmap(bitmapData)); 

// creates a dummy object to draw and draws a 10px circle 
var brush:Sprite = new Sprite(); // note this is not even added to the stage 
brush.graphics.beginFill(0xff0000); 
brush.graphics.drawCircle(10, 10, 10); 

// the matrix will be used to position the "brush strokes" on the canvas 
var matrix:Matrix = new Matrix(); 

// draws a circle in the middle of the canvas 
matrix.translate(250, 250); 
bitmapData.draw(brush, matrix 

// translates the position 5 pixels to the right to slightly erase the previously 
// drawn circle creating a half moon    
matrix.translate(5, 0); 
bitmapData.draw(brush, matrix,null,BlendMode.ERASE); 
+0

J'ai fait ce que vous avez dit et ajusté avec mon code ... J'ai utilisé la ligne comme le pinceau mais ne fonctionne pas ... – LittleFunny

+0

Cela fonctionne maintenant .. Merci ... – LittleFunny

+0

super, pas de problème. –