Vous pouvez appliquer des filtres à l'aide de l'interface utilisateur de Flash, dans Flash Professionnel 8, ou du code ActionScript dans Flash Basic 8 ou Flash Professionnel 8. Vous pouvez appliquer chacun de ces effets de filtre à des clips, des boutons ou des champs de texte à l'aide du code ActionScript.
Si vous utilisez du code ActionScript pour appliquer des filtres à une occurrence, vous pouvez aussi utiliser les filtres de mappage du déplacement ou de convolution, non disponibles dans l'interface utilisateur de Flash. Ces filtres étant appliqués aux définitions vectorielles, il est inutile de stocker une image bitmap dans le fichier SWF. Vous pouvez également écrire du code ActionScript pour modifier un filtre existant que vous avez déjà appliqué à un champ de texte, un clip ou un bouton.
A ce stade, vous pouvez essayer d'appliquer l'effet de filtre de base de votre choix à l'aide du code ActionScript. La documentation Flash en propose de nombreux exemples (voir la liste suivante). Toutefois, commençons par un exemple simple : un filtre de biseau. En voici un exemple.
Sélectionnez l'image1 du scénario, puis ajoutez le code ActionScript suivant :
import flash.filters.BevelFilter; // Définition d'un filtre de biseau var bevel:BevelFilter = new BevelFilter(4, 45, 0x99CCFF, 1, 0x003399, 1, 10, 10, 2, 3); // Définition de l'intensité bevel.strength = 5; // Application du filtre à my_mc my_mc.filters = [bevel];
Remarque<:hs>: Pour plus d'informations sur l'utilisation des packages, tels que flash.filters.BevelFilter, consultez la section suivante de Flash LiveDocs* : Formation à ActionScript 2.0 dans Flash> Création d'animations, de filtres et de dessins dans ActionScript 2.0 > Animation des effets de filtres > Fonctionnement des paquets de filtres.
Sélectionnez Contrôle > Tester l'animation pour tester le document.
Pour plus d'informations sur les paramètres transmis au filtre de biseau, consultez la section suivante de Flash LiveDocs* : Guide de référence du langage ActionScript 2.0 > Classes ActionScript > BevelFilter (flash.filters.BevelFilter).
L'application de différents filtres à l'aide de code est à peu près identique. Certains filtres requièrent cependant d'autres informations lorsque vous les appliquez. Par exemple, le filtre matrice de couleurs requiert un tableau. Vous pouvez utiliser le filtre matrice de couleurs pour modifier la luminosité d'une occurrence, comme dans l'exemple suivant.
Ajoutez le code ActionScript suivant à l'image1 du scénario :
import flash.filters.ColorMatrixFilter;
System.security.allowDomain("http://www.helpexamples.com/");
var mcl_obj:Object = new Object();
mcl_obj.onLoadInit = function(target_mc:MovieClip):Void {
var myElements_array:Array = [1, 0, 0, 0, 100,
0, 1, 0, 0, 100,
0, 0, 1, 0, 100,
0, 0, 0, 1, 0];
var myColorMatrix_filter:ColorMatrixFilter = new ColorMatrixFilter(myElements_array);
target_mc.filters = [myColorMatrix_filter];
}
this.createEmptyMovieClip("img_mc", this.getNextHighestDepth());
var img_mcl:MovieClipLoader = new MovieClipLoader();
img_mcl.addListener(mcl_obj);
img_mcl.loadClip("http://www.helpexamples.com/flash/images/image2.jpg", img_mc);
Ce code charge une image JPEG dynamiquement à l'aide d'une occurrence MovieClipLoader. Une fois l'image complètement chargée et placée sur la scène, la luminosité de l'occurrence est définie sur 100 % à l'aide d'un filtre matrice de couleurs.
Pour plus d'informations sur la matrice de couleurs, consultez la section suivante de Flash LiveDocs* : Guide de référence du langage ActionScript 2.0 > Classes ActionScript > ColorMatrixFilter (flash.filters.ColorMatrixFilter).
Sélectionnez Contrôle > Tester l'animation pour tester le document.
Après avoir appliqué un filtre, vous pouvez le manipuler avec du code ActionScript, par exemple ajuster ses propriétés ou l'animer. Pour plus d'informations, consultez les sections suivantes : Ajustement des propriétés de filtres avec ActionScript et Animation des filtres avec ActionScript.
Remarque<:hs>: Deux filtres supplémentaires, non disponibles dans l'interface utilisateur de Flash, peuvent être appliqués à l'aide de code ActionScript : le filtre de convolution et le filtre de mappage de déplacement. Pour plus d'informations sur ces filtres, consultez les sections suivantes de Flash LiveDocs* :
Utilisation du filtre convolution (Formation à ActionScript 2.0 dans Flash > Création d'animations, de filtres et de dessins dans ActionScript 2.0 > Utilisation des filtres avec ActionScript > Utilisation du filtre convolution.
Pour des exemples d'application de chaque filtre à l'aide de code ActionScript, consultez les sections suivantes de Flash LiveDocs* :
Vous pouvez accéder au tableau des filtres appliqués à un objet via des appels ActionScript standard, à l'aide de la propriété MovieClip.filters. L'appel de cette propriété vous renvoie un tableau contenant tous les objets de filtres actuellement associés au MovieClip. L'ajout de plusieurs filtres au tableau de filtres d'un objet vous permet d'appliquer plusieurs effets. Les effets sont alors appliqués dans leur ordre d'apparition dans la liste.
Il est important de noter que la définition de la propriété filters duplique le tableau de filtres que vous lui transférez (comme dans l'exemple suivant) et ne stocke pas le filtre comme une référence. Lorsque vous obtenez la propriété filters, une nouvelle copie du tableau est renvoyée. L'un des inconvénients de cette méthode est que le code suivant ne fonctionnera pas :
// Ce code ne fonctionnera pas my_mc.filters[0].push(myFilter);
Cet exemple de code renvoyant une copie du tableau de filtres, la copie est modifiée. L'exemple suivant ajoute un filtre de flou à la fin de la liste de filtres existants d'un objet :
// Ce code fonctionnera : import flash.filters.BlurFilter; var filterList:Array = myClip.filters; filterList.push(new BlurFilter(3,3,2)); myClip.filters = filterList;
L'avantage ici est que vous pouvez copier les filtres d'un objet, les modifier, puis les appliquer à un autre objet sans vous soucier d'affecter les filtres de l'objet initial.
Vous pouvez accéder au tableau de filtres appliqué à un objet via des appels ActionScript standard, à l'aide de la propriété MovieClip.filters. L'ajout de plusieurs filtres au tableau de filtres d'un objet vous permet de lui appliquer plusieurs effets. Les filtres sont alors appliqués dans leur ordre d'apparition dans la liste. L'appel de cette propriété vous renvoie un tableau contenant tous les objets de filtres actuellement associés au clip. Chaque filtre est assorti de son propre jeu de propriétés. Les filtres sont accessibles et peuvent être modifiés comme n'importe quel objet de tableau mais, si vous utilisez la propriété filters, vous obtenez un double de l'objet de filtre, et non pas sa référence.
La définition de la propriété filters duplique le tableau de filtres que vous lui transférez (comme dans l'exemple suivant) et ne stocke pas le filtre comme une référence. Lorsque vous lisez la propriété de filtre, vous obtenez une nouvelle copie du tableau. Cela vous permet de copier les filtres d'un objet, de les modifier, puis de les appliquer à un autre objet sans vous soucier d'affecter ceux de l'objet initial. L'un des inconvénients de cette méthode est que le code suivant ne fonctionnera pas :
// Ce code ne fonctionne pas my_mc.filters[0].blurX = 20;
Cet exemple de code renvoyant une copie du tableau de filtres, la copie est modifiée. Pour modifier la propriété blurX, utilisez plutôt le code ActionScript suivant :
// Ce code fonctionne var filterList:Array = my_mc.filters; filterList[0].blurX = 20; my_mc.filters = filterList;
L'exemple suivant applique un flou à une image à partir de la position courante du pointeur de souris sur la scène. Chaque fois que le pointeur de la souris est déplacé horizontalement ou verticalement, les propriétés blurX et blurY du filtre de flou sont modifiées en conséquence.
Ajoutez le code ActionScript suivant à l'image1 du scénario :
import flash.filters.BlurFilter;
// Création d'un nouveau clip nommé holder_mc
var holder_mc:MovieClip = createEmptyMovieClip("holder_mc", 10);
// Création d'un clip imbriqué nommé img_mc
holder_mc.createEmptyMovieClip("img_mc", 20);
// Chargement d'une image dans img_mc
holder_mc.img_mc.loadMovie("http://www.helpexamples.com/flash/images/image2.jpg");
// Application d'un filtre de flou
holder_mc.filters = [new BlurFilter(10, 10, 2)];
// Placement du clip sur la scène
holder_mc._x = 75;
holder_mc._y = 75;
// Ajustement du filtre de flou lors du déplacement de la souris
holder_mc.onMouseMove = function() {
var tempFilter:BlurFilter = holder_mc.filters[0];
tempFilter.blurX = Math.floor((_xmouse / Stage.width) * 255);
tempFilter.blurY = Math.floor((_ymouse / Stage.height) * 255);
holder_mc.filters = [tempFilter];
};
flash.filters.BlurFilter, de sorte que vous n'avez pas à utiliser le nom pleinement qualifié pour faire référence à la classe BlurFilter. La deuxième section de code crée une paire de clips et charge une image dans l'un des clips imbriqués. La troisième section répond aux mouvements de la souris sur la scène et ajuste le flou en conséquence. blurX du filtre de flou est modifiée. Déplacez le pointeur de souris le long de l'axe des y pour modifier la propriété blurY du filtre de flou. Le flou appliqué au clip diminue à mesure que le pointeur de la souris s'approche du coin supérieur gauche de la scène.