La technique de chroma key , c'est à dire le remplacement d'une certaine couleur à l'autre (ou d'une autre source), a explosé une fois dans la dernière décennie avec une arrogance grande, grâce à la technologie en plus répandue dans le film et le traitement des images numériques.
Articles taggés avec 'bitmap'
Comment appliquer la technique du chroma key dans Adobe Flash
Flash CS3: Créez un effet réflexe sur tout MovieClip
Profitant d'une caractéristique remarquable d'ActionScript 3.0 (voir ActionScript 3.0, tous avec le nouvel opérateur ), j'ai créé une classe de ReflexMe capable de générer un effet de "réflexion" sur n'importe quel MovieClip présents dans la bibliothèque.
La source fait partie du paquet undolibrary - GoogleCode de cela - mais si vous voulez vous pouvez télécharger le fichier unique ReflexMe.as .
Effets sur l'image bitmap avec perlinNoise ()
La classe BitmapData vous permet d'appliquer facilement des effets utiles à des fins diverses. Nous avons déjà vu comment créer un "TV brouillard» avec quelques lignes de code ( Flash CS3 pour créer une télévision effet de brouillard en 1 seconde ). Maintenant, nous allons faire face à un autre effet "spectaculaire" qui, comme nous le verrons plus tard, permet la création d'effets visuels intéressants, comme dans l'exemple illustré ci-dessous: les paramètres variés pour observer les différents effets, en cliquant avec la souris sur l'image générée Cela peut être déplacé.
A cette occasion, j'ai également ajouté une nouvelle composante simple (à cocher) dans Undolibrary ! Alors mettez à jour votre dépôt SVN. La source est disponible ici: MapEffect.zip
Papervision3D: Bitmap traiter comme FIVe3D
A partir de l'exemple représenté à FIVe3D: traiter Bitmap , nous allons voir comment obtenir le même effet en utilisant Papervision3D 2.0 (Great White), ainsi que de continuer à analyser le fonctionnement de cette bêta Great White.
FIVe3D: Bitmap traiter
Avec la version 2.1 du FIVe3D vous pouvez aussi manipuler des objets Bitmap , afin de surmonter la limitation initiale de cette bibliothèque ne Vector. e ruotarlo a nostro piacimento: Si nous incluons un Bitmap dans la bibliothèque et esprotiamo être en mesure de créer une instance dynamiquement à l'aide d'ActionScript, vous pouvez facilement créer un objet Bitmap3D et faire tourner à volonté:
Comment enregistrer des images dans Flash CS3
Avec l'utilisation d'Adobe Flash CS3 Bitmap est donc améliorée ce qui est immédiatement voulu créer une petite peinture. . Nous avons déjà vu comment faire une peinture de petite taille (voir la peinture de Flash CS3 Créer un peintre: application simple pour le dessin dans Flash Pro CS3 ) peut supporter une véritable «gomme» - fonction d'effacement, grâce à une utilisation particulière de couche Shape et de Bitmap . Disons que Flash (contrairement à Flex), il ne permet pas l'encodage (tels que JPG ou PNG), il enregistre automatiquement les images bitmap. Cependant, vous pouvez la contourner en utilisant un script côté serveur et la possibilité d'envoyer des données dans Flash POST.
Flash CS3 pour créer une télévision effet de brouillard en 1 seconde
Flash CS3 ne cesse d'étonner. Voici comment faire pour créer le brouillard classique de téléviseurs en une seconde avec 10 lignes de code.
Peinture Flash CS3: véritable outil d'effacer le temps
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 |
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")..; |
Peinture pour créer une application dans Flash CS3
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.






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, ...