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 ; spreadMethod var: 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
| ... / / Shape n'est pas visible, utilisé pour la «annulation» Shape = new Shape ( ) ; erase_shape var: Shape = new Shape (); |
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")..; |
Suite ...
Comme expliqué dans Flash Actionscript concours: l'outil d'effacement vous ne pouvez pas "effacer" une zone particulière d'un Sprite, MovieClip ou forme sur laquelle des lignes ou des rectangles ont été tirées à l'aide du curseur graphique. Il est, en fait, la seule méthode clear() , cependant, n'a aucun effet sur toute la surface de l'objet. La solution à ce problème réside dans la possibilité d'utiliser le bitmap et objets BitmapData. Comme nous le verrons, nous pouvons directement accéder et manipuler des données bitmap afin de "gommer" coups avec un instrument "effaceur" réel.
Présenter deux méthodes différentes pour atteindre la "porte". per esempio. Le premier "tirage" (supprimer) les données directement dans le BitmapData, en utilisant la méthode fillRect() - peut également être utilisé setPixel() par exemple. La seconde méthode, celle que je préfère, utilise les méthodes de fusions (blendMode).
Tout d'abord nous allons voir ce genre d'organisation est minimalement nécessaire pour atteindre un peintre Flash simple. Le schéma présenté ci-dessous s'applique à la fois les propositions de la «porte»:

J'ai créé trois couches: la première, MovieClip ou Sprite, le contexte et le travail du gestionnaire d'événement (MouseDown, MouseMove et MouseUp). Le second, le bitmap est notre principale couches, celui qui sera effectivement établi graphiques seront appliquées et sur lequel la "porte". , ecc…). La troisième couche et la dernière, la forme, traite de deux questions: la première est qu'il permet d'utiliser directement les fonctions prévues par le curseur graphique (comme lineStyle , drawRect() , etc ...). Elle accroît également la performance au cours du tableau de suivi, comme expliqué en détail ci-dessous.
Suite ...
Je l'ai état maintenant: vous ne gagnez rien! En dehors de la fierté - si quelque chose - d'avoir résolu le problème.
QUEST - APPLICATION
Comment créer un outil pour effacer, supprimer, clair, une "partie" de l'API graphique conçu avec ActionScript 3.0?
, espongono la proprietà graphics , un puntatore ad un altro oggetto che “serve” tutte le funzioni grafiche di disegno runtime. Avec ActionScript 3.0 Certains objets visuels, tels que MovieClip ou de Shape , d'exposer les biens graphics , un pointeur vers un autre objet qui «sert» toutes les fonctions graphiques d'exécution de conception. Par exemple, vous pouvez développer une application de dessin simple. , in modo semplice e rapido. Cet objet graphics peut dessiner ce que vous voulez, par exemple, un objet de Shape , facilement et rapidement. Le problème est que quelque chose une fois est attirée pouvez nettoyer tous, mais une seule pièce.
Tracez une ligne est facile:
1 2 3 4 5 6
| Shape = new Shape ( ) ; myShape var: Shape = new Shape (); myShape ) ; addChild (myShape); / / . lineStyle ( 2 , 0xff0000 , 1 ) ; .. myShape graphiques lineStyle (2, 0xFF0000, 1); . moveTo ( 0 , 0 ) ; .. myShape graphiques moveTo (0, 0); . lineTo ( 100 , 100 ) ; .. myShape graphiques lineTo (100, 100); |
Drawn quelque chose que vous pouvez nettoyer le tout avec la simple appel à clear() :
1
| . clear ( ) ; . myShape graphiques clairs ().; |
Mais si je veux "supprimer" un seul point? Ou les coordonnées de 50,50 à 100.100?
La recherche sur Internet j'ai trouvé plusieurs exemples de «applications de conception» et, en fait, n'offre aucun support ou un outil de "supprimer".
Avez-vous une solution?
Suite ...
Pour certains développeurs juste besoin de savoir qu'il ya une nouvelle version de leur programme de développement préféré de courir et d'acheter la mise à niveau. D'autres, à juste titre, plus calme et de maintenir un "semblant" de savoir l'amélioration réelle dans la nouvelle version avant de vous changer vos habitudes. Dans le cas de Adobe Flash CS3 n'est pas beaucoup à attendre, étant donné les nombreux changements que le colis a subi depuis Macromedia a été rachetée par Adobe.
Voici donc 10 bonnes raisons simples, mais importantes, qui, à mon opinion personnelle, assez pour vous convaincre de passer à Adobe Flash CS3 . Je vais me concentrer, bien sûr, uniquement sur les choses qui m'a frappé personnellement, ce n'est pas conçu comme une liste exhaustive de toutes les nombreuses innovations introduites par la suite CS3, seule une volée d'anticiper certaines fonctionnalités de CS3.
1. Installation
L'installation est agréable et rapide, comparé aux versions précédentes. Il comprend, entre autres choses, avec tous les produits Adobe (Dreamweaver CS3, Photoshop CS3 Extended, etc ...) ce qui rend le montage / démontage, et mettre à jour un réel plaisir.
2. Rétrocompatibilité
Une question souvent négligée, mais toujours pris en compte dans l'histoire de Flash: La capacité à gérer les versions précédentes du produit. Dans Flash CS3 a tous les outils pour manipuler, il est de migrer les versions précédentes de nos films. Nous trouvons cette possibilité dans le débogage (débogage séparé ActionScript 2.0 et ActionScript 3.0) est en train de terminer le film. Ecrire désormais applications ActionScript 3.0 Flash pourrait être contre-productif dans certains contextes. Si votre site cible a un trafic élevé vous pouvez constater que de nombreux utilisateurs n'ont pas encore installé la dernière version de Flash Player pour votre navigateur, puis ne serait pas voir le film. Cependant, comme noté ci-dessus, Flash CS3 vous permet de développer des applications Flash rétrocompatibilité mantendedo et donc je ne vois pas cela comme un produit ostocalo nell'upgrade grand.
3. GUI et IDE

L'IDE Flash CS3 (comme Dreamweaver CS3) a été révisé afin de mieux. Les panneaux (voir photo à gauche), souvent inconfortable dans les versions précédentes, ont été complètement repensés et maintenant leur utilisation est beaucoup moins invasive.
En outre, la capacité de minimiser les panneaux (voir figure à droite) est constaté que fait une véritable interface attrayante et fonctionnelle. Quand un panneau est en icône de mode prend beaucoup moins de place et avec un simple clic vous pouvez ouvrir le premier panneau principal toujours visible.
Tous les IDE, en bref, a été révisé, y compris la zone centrale avec la fenêtre d'édition et de code graphique. N'avez-vous pas remarquer tous les changements ou vous gâcher la surprise ...

Suite ...
Derniers Commentaires
Simon : Il agace perturbés à nouveau et utiliser cet espace pour ces choses ... Mais ça ne fonctionne pas ...
Giovambattista Fazioli : @ Simon: ce pourrait être dû à la syntaxe que j'ai utilisé, spécialement pour PHP 5 +,...
Simon : J'ai essayé hier soir de mettre le tout dans functions.php, d'accord, les formes jquery, et les onglets jQueryUI eux ...
Giovambattista Fazioli : @ Simon: Je recommande le nettoyage d'entrer un code comme celui de ...
Simon : @ Giovambattista Fazioli: Je vous remercie pour votre patience, c'est tout clair ... maintenant je me sens maintenant, ...