Diminution progressive de la luminosité avec l'objet Color

Résolu
delf013 Messages postés 12 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 avril 2007 - 8 avril 2007 à 21:41
patrickart Messages postés 24 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 2 juillet 2010 - 24 mars 2010 à 10:45
Bonjour tout le monde,
Après avoir cherché longuement je n'ai pas trouvé de réponse à mon problème.
Je m'explique. Je souhaite diminuer la luminosité de mon image de façon progressive en AS. J'ai donc trouvé ce script qui utilise la methode setTransform de l'objet Color:
var couleur = new Color(monClip);
var assombrir = new Object();
assombrir.ra =50;
assombrir.ga =50;
assombrir.ba =50;
couleur.setTransform(assombrir);
Mais la luminosité baisse d'un coup et moi je souhaiterais la rendre progressive au clic d'un bouton.
Si quelqu'un pouvais m'aider, car j'avoue ne pas être super callée en ActionScript et encore moins en programmation orientée objet =(
Merci d'avance.

7 réponses

Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 1
12 avril 2007 à 11:05
Salut,

Effectivement, y a un bug

C'est en partie de ma faute, (en partie seulement, hein ) j'ai oublié de vérifier ton code pour le changement d'intensité lumineuse.
Ce n'est pas comme ça qu'il faut procéder. Tu ne peux modifier directement l'objet Color, tu dois passer par une fonction de transformation.

Code :
    function assombrissement(objet_couleur:Color){
        // On récupère les informations de couleur de l'objet demandé
        var transformation    :Object    = objet_couleur.getTransform();
        // On retire un point de luminosité à chaque lancement de la fonction
        transformation.ra--;
        transformation.ga--;
        transformation.ba--;
        // On réattribue le changement de couleur
        objet_couleur.setTransform(transformation);
    }

    // Variable qui contiendra la boucle.
    var interval :Number = 0;

    bouton.onRelease = function(){
       // Création de l'objet couleur :
        var couleur :Color = new Color(monClip);
        // Lancement de la boucle d'assombrissement
        interval = setInterval(assombrissement, 10, couleur);
    }
Fin code

Je t'ai mis en rouge la partie à modifier.
De plus, si tu regardes la fonction onRelease, j'ai ajouté en vert deux petits mots.
Ca ne change en rien ton code, c'est juste que c'est plus syntaxiquement correct

J'ai testé ( cette fois ) le code et ça ne devrait plus poser de problème. Je n'ai modifié que l'intensité lumineuse de l'objet "transformation" mais tu peux bien évidemment changer aussi la teinte.

En espérant que cette fois il n'ait plus de soucis.

--------- Darkrats ---------
la loi est dure mais c'est la loi
 -------- Infograpix --------
3
tomm123456 Messages postés 52 Date d'inscription jeudi 8 décembre 2005 Statut Membre Dernière intervention 11 avril 2007
9 avril 2007 à 10:27
il faut que tu crées un clip qui contient ton image et sur chaque image soit tu crées des images clés avec la propriete alpha qui diminue , soit sur chque image this.._alpha=30;
puis this._alpha=20;......
0
delf013 Messages postés 12 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 avril 2007
9 avril 2007 à 20:33
Oui j'ai pensé a diminuer l'opacité mais ce n'est pas le rendu que je souhaite. Je voudrais que mon image s'assombrisse petit à petit. Et c'est là où ça se corse pour moi, c'est que cette manip j'aimerais la faire en actionScript. Et apparement la solution est d'utiliser setTransform de l'objet Color. Mais je ne sais pas comment créer un assombrissement progressif....
En tout cas merci pour ta réponse rapide
0
Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 1
10 avril 2007 à 14:12
Salut,

Comme tu l'as vu, le code pour baisser la luminosité d'une couleur se trouve dans l'objet Color. Je ne vais donc pas toucher à cette portion du code, vu que, toi, ce qui t'intéresse c'est de le faire progressivement

Voici une méthode pour le faire progressivement au clic d'un bouton
Code :
    function assombrissement(objet_couleur:Color){
       // On retire un point de luminosité à chaque lancement de la fonction

       objet_couleur.ra--;

       objet_couleur.ga--;

       objet_couleur.ba--;
    }

    // Variable qui contiendra la boucle.
    var interval :Number = 0;
   
    bouton.onRelease = function(){
       // Création de l'objet couleur :
       couleur = new Color(monClip);
       // Lancement de la boucle d'assombrissement
       interval = setInterval(assombrissemen, 10, couleur);
    }
Fin code

Si tu veux arrêter l'interval, il te suffit de faire
    clearInterval(interval);
Tu peux ajouter une condition qui bloquera l'assombrissement pour qu'il ne devienne pas totalement noir.

Tu peux aussi utiliser un onEnterFrame(), ça s'est à toi de voir ce qui te convient le mieux.

--------- Darkrats ---------
la loi est dure mais c'est la loi
 -------- Infograpix --------
0

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

Posez votre question
delf013 Messages postés 12 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 avril 2007
11 avril 2007 à 20:10
Salut, Darkrats et merci pour ta réponse.
J'ai recopié ton code mais à peine l'ai-je testé que j'ai un message d'erreur:
"Il n'existe aucune propriété nommée 'ra'.
         objet_couleur.ra--;"
Est-ce une erreur de syntaxe?
 
0
delf013 Messages postés 12 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 avril 2007
14 avril 2007 à 10:09
Héhéhéhéhé ça fonctionne!
Merci beaucoup.
J'ai encore quelques problèmes pour attribuer cette fonction aux clips que je veux mais je vais me débrouiller toute seule (et oui faut bien que je me prenne aussi un peu la tête de mon coté si je veux progresser^^).
Et ce code m'aide déjà beaucoup.
Donc encore une fois, un grand merci.

 
0
patrickart Messages postés 24 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 2 juillet 2010
24 mars 2010 à 10:45
Bonjour,
J'ai a peu prêt le même problème, voila j'ai recréé un appareil photos de type Holga en as2.
j'ai un clip "ensemble" qui lorsque l'on clique sur le déclencheur charge aléatoirement des images dispo dans la bibliothèque.
Le principe du holga est qu'il permette de faire de la surimpression, (j'ai réussi parfaitement a recrée cette effet), j'aimerai maintenant arrivé a modifié la luminosité des mes images selon le temps passé a appuyé sur le déclencheur; j'espère que c'est claire en gros plus je clique plus l'image est "brulé", est t-il possible d'adapté ton bout de code avec un "timer" ?
merci beaucoup
bonne journée
0
Rejoignez-nous