Diminution progressive de la luminosité avec l'objet Color [Résolu]

Signaler
Messages postés
12
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
Dernière intervention
19 avril 2007
-
Messages postés
24
Date d'inscription
dimanche 6 septembre 2009
Statut
Membre
Dernière intervention
2 juillet 2010
-
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

Messages postés
212
Date d'inscription
mardi 2 novembre 2004
Statut
Membre
Dernière intervention
12 mai 2008
1
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 --------
Messages postés
52
Date d'inscription
jeudi 8 décembre 2005
Statut
Membre
Dernière intervention
11 avril 2007

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;......
Messages postés
12
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
Dernière intervention
19 avril 2007

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
Messages postés
212
Date d'inscription
mardi 2 novembre 2004
Statut
Membre
Dernière intervention
12 mai 2008
1
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 --------
Messages postés
12
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
Dernière intervention
19 avril 2007

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?
 
Messages postés
12
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
Dernière intervention
19 avril 2007

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.

 
Messages postés
24
Date d'inscription
dimanche 6 septembre 2009
Statut
Membre
Dernière intervention
2 juillet 2010

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