"Blendmode personnalisé"

J_raf Messages postés 5 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 13 juin 2007 - 8 juin 2007 à 16:01
J_raf Messages postés 5 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 13 juin 2007 - 13 juin 2007 à 20:18
Bonjour
J'ai un clip rectangulaire rouge et un bleu, qui ressemblent a deux bandes qui se croisent. Je voudrais que la zone de croisement change de couleur. Pour çà j'ai BlendMode mais je voudrais la couleur de mon choix. Comment je fais ?
Merci à vous
Jean-Raphaël

7 réponses

J_raf Messages postés 5 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 13 juin 2007
9 juin 2007 à 18:36
Kwaaaa ? C'est tout ce qu'il y a comme réponses ?
Bon je vais faire un petit dessin pour ameuter les foules. Voilà mes bandes :

Et pis aussi un peu de code :

    //parametres
    coul_bande1 = 0xff0000;
    alpha_bande1 = 100;
    z_bande1 = 1;
    coul_bande2 = 0x0000ff;
    alpha_bande2 = 100;
    z_bande2 = 2;
   
    //1ere bande
    this.createEmptyMovieClip("bande1_mc", z_bande1);
    bande1_mc.beginFill(coul_bande1, alpha_bande1);
    bande1_mc.moveTo(180,10);
    bande1_mc.lineTo(220,10);
    bande1_mc.lineTo(220,280);
    bande1_mc.lineTo(180,280);
    bande1_mc.lineTo(180,10);
    bande1_mc.endFill();
   
    bande1_mc._rotation=15;

    //2e bande
    this.createEmptyMovieClip("bande2_mc", z_bande2);

    bande2_mc.blendMode = "difference";
   
    bande2_mc.beginFill(coul_bande2, alpha_bande2);
    bande2_mc.moveTo(30, 160);
    bande2_mc.lineTo(30, 200);
    bande2_mc.lineTo(320, 200);
    bande2_mc.lineTo(320,160);
    bande2_mc.lineTo(30,160);
    bande2_mc.endFill();

    bande2_mc._rotation= -5;

Pas méchant, hein ?
Comme vous le voyez, la zone d'intersection des bandes est violette. C'est parce que j'ai mis :

    bande2_mc.blendMode = "difference";

Comment je fais pour que la zone d'intersection soit de la couleur que je veux ?
Tiens, au hasard, jaune ?
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
10 juin 2007 à 02:12
ben tu peux pas ...
Enfin, pas en blend mode !

Peg'
0
J_raf Messages postés 5 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 13 juin 2007
10 juin 2007 à 21:15
> Enfin, pas en blend mode !

Tu penses à une autre manière ?
(histoire de voir si je ne prends pas mes désirs pour des réalités )

Jraf
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
10 juin 2007 à 21:20
ben il ya  toujours la méthode mathématique d'intersection de deux solides ...

Mais ça c'est pas une simple ligne de fonction Flash !

Peg'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J_raf Messages postés 5 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 13 juin 2007
11 juin 2007 à 07:33
Oui, je pourrais trouver les coordonnées des points d'intersection et definir un nouveau clip en mettant la couleur que je veux. L'ennui c'est que ça va prendre plus de temps de calcul qu'un simple "blendmode", sur deux clips ca ne se verra pas mais s'il y en a plus, ce que je voudrais ... çà va ralentir l'animation.
Peut-être faudrait-il redéfinir la fonction blendmode (voilà j'ai osé ). On peut redefinir une fonction sous Flash? Mais peut-être que ça ne sert à rien car Flash player ne travaille rapidement que pour les fonctions prédéfinies ?
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
11 juin 2007 à 07:37
tu as un peu résumé le principe de Flash ...
Le BlendMode n'est pas redéfinissable, comme toute autre fonction de flash codée "en dur".
Il n'y a  pas vraiment de solution a ton problème ... en tout cas, pas de façon "simple".

Il y aurait toujours cette possibilité de s'amuser avec les filtres graphiques de la fonction MatrixFilter, mais franchement, c'est de la "science Fiction" et tu perdrait le côté vecto pour ne fonctionner qu'avec du bitmap...

Peg'
0
J_raf Messages postés 5 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 13 juin 2007
13 juin 2007 à 20:18
J'allais faire une liste noire de tous les gus qui m'ont asséné qu'avec Flash tout était possible, quand tout à coup, venant du forum Flashhouse, KdTcA m'a apporté la solution : l'utilisation des MASQUES !
En effet c'est beaucoup moins lourd à gérer pour Flash Player que les croisements de coordonnées apparemment.

Voici un deuxième programme avec les masques. Ici, j'ai pris un exemple particulier (croisement perpendiculaire), mais çà marche dans toutes les positions de clips.
En plus, plus besoin de blendmode, donc compatibilité avec des players moins récents !
L'idée c'est deux faire 2 autres clips qui sont les copies des deux bandes et qui sont superposés. L'un de ces clips définit la couleur du croisement, et l'autre, c'est le masque !

    coul_bande1 = 0xff0000;
    alpha_bande1 = 100;
    z_bande1 = 1;
    
    // bande 1  : rouge, horizontale
    this.createEmptyMovieClip("bande1_mc", z_bande1);
    bande1_mc.beginFill(coul_bande1, alpha_bande1);
    bande1_mc.moveTo(40,70);
    bande1_mc.lineTo(250,70);
    bande1_mc.lineTo(250, 110);
    bande1_mc.lineTo(40,110);
    bande1_mc.lineTo(40,70);
    bande1_mc.endFill();
    
    // bande 2  : bleue, verticale
    bande1_mc.duplicateMovieClip("bande2_mc",2);
    bande2_mc._x = 230;
    bande2_mc._y= -20;
    bande2_mc._rotation = 90;

    var my_color:Color = new Color(bande2_mc);
    my_color.setRGB(0x0000FF);
    
    // bande 3  : couleur du croisement (par ex. verte)
    // horizontale, même position que bande 2
    bande2_mc.duplicateMovieClip("bande3_mc",3);
    bande3_mc._x = 230;
    bande3_mc._y= -20;
    
    var my_color2:Color = new Color(bande3_mc);
    my_color2.setRGB(0x00FF00);
    
    
    // bande 4  : c'est le masque.
    // Couleur quelconque, meme placement que le premier clip
    // (ici bande horizontale)
    
    bande1_mc.duplicateMovieClip("masque_mc",4);
    var my_color3:Color = new Color(masque_mc);
    my_color3.setRGB(0xCCCCCC);
    
    bande3_mc.setMask(masque_mc);   

Ca peut toujours servir !
Un grand Merci à KdTcA de flashhouse.free.fr et tous ceux qui m'ont suivi sur ces fils !

Jean-Raphaël
0
Rejoignez-nous