En commençant par les codes fournis dans Créer un peinture dans Flash CS3 , et effectuer des modifications mineures, peut grandement améliorer l'instrument de "effacement". Ajout d'une figure n'est pas visible, vous pouvez l'utiliser comme un «plan» pour exécuter le draw() dans le mode de fusion "effacement". Comme le montre l'exemple ci-dessous, après avoir tiré quelque chose, maintenez la touche Ctrl enfoncée et l'effet de "supprimer" apparaît 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 ; importer flash.display. Bitmap ; . GradientType ; import flash.display. GradientType ; / / . Matrix ; . importation flash.geom matrice ; / / Boolean = false ; md var: Boolean = 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 stade stageWidth; Number = event_spr . stage . stageHeight - 32 ; area_height var: Nombre .. = event_spr stade stageHeight - 32; / / String = GradientType . LINEAR ; fillType var: Chaîne = GradientType LINÉAIRE;. : 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 ; spreadMethod var: Chaîne = SpreadMethod PAD;. : Matrix = new Matrix ( ) ; var matrice: Matrice = new Matrice (); createGradientBox ( area_width , area_height , 1 , 0 , 0 ) ; . matrice createGradientBox (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, de matrice, SpreadMethod); 0 , 0 , area_width , area_height ) ; drawRect (0, 0, area_width, area_height); ; endFill (); } / / Événements Paint ( 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 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: Forme = new Shape (); draw_shape ) ; addChild (draw_shape); / / / / Forme, non représenté, utilisé pour la «annulation» Shape = new Shape ( ) ; erase_shape var: Forme = 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 clear ()..; . clear ( ) ; erase_shape graphiques clear ()..; } / / 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 && e. CtrlKey) { . lineTo ( e . localX , e . localY ) ; .. erase_shape graphiques lineTo (et. localX, et localY.); . draw ( erase_shape , null , null , "erase" ) ; bmp bitmapData dessiner (erase_shape, null, null, "effacement")..; } } / / 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 () + "" +. d getMilliseconds () + "" + v.); } |
): Nous avons ajouté une nouvelle forme, erase_shape pas visible (il n'a pas été fait aucun addChild() ):
1 2 3 |
Dans le code qui prend soin de dessin a été introduite pour la touche de contrôle et, si vous êtes pressé, concerne 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 dessiner (erase_shape, null, null, "effacement")..; |







Derniers Commentaires
Giovambattista Fazioli : @ Nik: Je suis heureux! Bonne chance alors!
Nik : J'ai lundi l'examen des informations sur java, grâce à moi que vous avez été très utile, le livre que je n'était pas claire ...
Marquez : Merci beaucoup, je l'ai allumé
Je l'ai résolu par la mise en [cc_objc] / / OptionViewController.m - ...
Giovambattista Fazioli : @ Mark: Je vous suggère de réfléchir une approche plus correcte. Si vous exécutez la sous-classe de l'onglet ...
louis : très clair et simple, je dois avouer que rédiger un an à peine utiliser des délégués créés par ...