En commençant par les codes fournis dans Flash CS3 Créer une peinture , et effectuer des modifications mineures, peuvent grandement améliorer l'instrument de "gommer". Ajout d'une figure n'est pas visible, vous pouvez l'utiliser comme un «plan» pour exécuter le draw() le mode de fusion «effacer». Comme le montre l'exemple ci-dessous, après avoir tiré quelque chose, maintenir enfoncée la touche Ctrl enfoncée et l'effet de «l'annulation» est désormais en temps réel.
Le code est comme suit: - Source :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | . MouseEvent ; flash.events importation. MouseEvent ; . BitmapData ; import flash.display. BitmapData ; . Bitmap ; import flash.display. bitmaps ; . GradientType ; . import flash.display GradientType ; / / . Matrix ; les importations flash.geom. Matrice ; / / Boolean = false ; MD var: booléen = false; / / Sprite = new Sprite ( ) ; var event_spr: Sprite = new Sprite (); event_spr ) ; addChild (event_spr); / / Number = event_spr . stage . stageWidth ; var area_width: Nombre = event_spr stages stageWidth;.. Number = event_spr . stage . stageHeight - 32 ; area_height var: Nombre .. = event_spr stages stageHeight - 32; / / String = GradientType . LINEAR ; fillType var: Chaîne = GradientType . linéaires; : Array = [ 0xFF0000 , 0x00FF00 , 0x0000ff ] ; couleurs var: tableau = [0xFF0000, 0x00FF00, 0x0000FF]; : Array = [ 1 , 1 , 1 ] ; var alphas: tableau = [1, 1, 1]; : Array = [ 0 , 128 , 255 ] ; ratios var: tableau = [0, 128, 255]; String = SpreadMethod . PAD ; var spreadMethod: Chaîne = SpreadMethod . PAD, : Matrix = new Matrix ( ) ; var matrice: Matrice = new Matrice (); createGradientBox ( area_width , area_height , 1 , 0 , 0 ) ; . createGradientBox matrice (area_width, area_height, 1, 0, 0); / / event_spr . graphics ) { avec (event_spr. graphiques) { fillType , colors , alphas , ratios , matrix , spreadMethod ) ; beginGradientFill (fillType, couleurs, alphas, ratios, matrice, spreadMethod); 0 , 0 , area_width , area_height ) ; drawRect (0, 0, area_width, area_height); ; endFill (); } / Événement / Peinture ( MouseEvent . MOUSE_DOWN , _onMouseDown ) ; . event_spr addEventListener ( MouseEvent MOUSE_DOWN, _onMouseDown.); ( MouseEvent . MOUSE_MOVE , _onMouseMove ) ; . event_spr addEventListener ( MouseEvent MOUSE_MOVE, _onMouseMove.); ( MouseEvent . MOUSE_UP , _onMouseUp ) ; . event_spr addEventListener ( MouseEvent MOUSE_UP, _onMouseUp.); ( MouseEvent . MOUSE_OUT , _onMouseUp ) ; . event_spr addEventListener ( MouseEvent MOUSE_OUT, _onMouseUp.); / / BitmapData = new BitmapData ( event_spr . width , event_spr . height , true , 0 ) ; var bmpd: BitmapData = new BitmapData (largeur event_spr., event_spr la hauteur, c'est vrai, 0.); Bitmap = new Bitmap ( bmpd ) ; var bmp: Bitmap = new Bitmap (bmpd); bmp ) ; addChild (bmp); / / / / Forme temporaire Shape = new Shape ( ) ; draw_shape var: Shape = new Shape (); draw_shape ) ; addChild (draw_shape); / / / / Shape n'est pas visible, utilisé pour la «annulation» Shape = new Shape ( ) ; erase_shape var: Shape = new Shape (); / / e : MouseEvent ) : void { Fonction _onMouseDown (e: MouseEvent ): void { ) ; debug ("_onMouseDown"); . lineStyle ( 10 , 0xffffff , 1 ) ; .. draw_shape graphiques lineStyle (10, 0xFFFFFF, 1); . lineStyle ( 20 , 0xffffff , 1 ) ; .. erase_shape graphiques lineStyle (20, 0xFFFFFF, 1); . moveTo ( e . localX , e . localY ) ; .. draw_shape graphiques moveTo (et. localX et localY.); . moveTo ( e . localX , e . localY ) ; .. erase_shape graphiques moveTo (et. localX et localY.); md = true; } / / e : MouseEvent ) : void { _onMouseUp function (e: MouseEvent ): void { md = false; . draw ( draw_shape ) ; .. bmp bitmapData tirage (draw_shape); . clear ( ) ; . draw_shape graphiques clairs ().; . clear ( ) ; . erase_shape graphiques clairs ().; } / / e : MouseEvent ) : void { _onMouseMove function (e: MouseEvent ): void { ) ; debug ("_onMouseMove"); md && ! e . ctrlKey ) { if (& & md! et. ctrlKey) { . lineTo ( e . localX , e . localY ) ; .. draw_shape graphiques lineTo (et. localX et localY.); ( md && e . ctrlKey ) { } Else if (MD & & et. CtrlKey) { . lineTo ( e . localX , e . localY ) ; .. erase_shape graphiques lineTo (et. localX et localY.); . draw ( erase_shape , null , null , "erase" ) ; bmp bitmapData tirage (erase_shape, null, null, "effacer")..; } } / / v : String ) : void { debug fonction (v: cordes ): void { : Date = new Date ( ) ; var d: Date de = new Date de (); d . getMinutes ( ) + ":" + d . getSeconds ( ) + ":" + d . getMilliseconds ( ) + ": " + v ) ; trace (d. getMinutes () + "" + d. getSeconds () + "" + getMilliseconds d. () + "" + st); } |
): Nous avons ajouté une nouvelle forme, erase_shape pas visible (il a été procédé à aucune addChild() ):
1 2 3 |
Le morceau de code qui prend soin de dessin a été introduit pour la touche de contrôle et, si pressée, est intéressé précisément la forme erase_shape et copié dans le bitmap:
1 2 3 | .... . lineTo ( e . localX , e . localY ) ; .. erase_shape graphiques lineTo (et. localX et localY.); . draw ( erase_shape , null , null , "erase" ) ; bmp bitmapData tirage (erase_shape, null, null, "effacer")..; |







Derniers Commentaires
datrix : Merci beaucoup!
Robert : Je rispsoto vos questions avec plaisir. L'idée est vraiment géniale. Je suis à la recherche d'une solution ...
Sting : @ Darius - vous pouvez voir un exemple ici: http://www.fight4fun.it/ cliquant sur: CARTES j'espère ...
Vik : Giustappunto je travaille sur un projet et le client m'a demandé de montrer toutes les nouvelles (qui sont CPT) au ...
Giovambattista Fazioli : @ paso: absolument. Il suffit d'identifier le champ [CCI] entrée [/ cci] que vous souhaitez ...