SetMask et duplicateMovie pour effet boule de neige

Tigerlely Messages postés 14 Date d'inscription mardi 29 mai 2007 Statut Membre Dernière intervention 26 février 2010 - 4 déc. 2008 à 10:39
Tigerlely Messages postés 14 Date d'inscription mardi 29 mai 2007 Statut Membre Dernière intervention 26 février 2010 - 4 déc. 2008 à 10:56
Bonjour à tous,

J'ai un petit problème que je n'arrive pas à résoudre, pourtant suis sûr d'être po loin d'y arriver, mais rien à faire, mon cerveau ne trouve pas.
J'ai récupérer le code de Lamor sur ce site pour générer une tomber de neige.

Or en fait mon projet est de créer une "boule de neige", c'est objet que l'on remue et où l'on regarde tomber la neige.
Or je n'arrive pas à appliquer un masque pour que la neige apparaisse uniquement dans la boule.

J'ai créé un clip dont l'occurence est mask_mc et tenté d'appliquer le code nom_clip_a_masquer.setMask(mask_mc) un peu partout mais rien à faire. Il fonctionne que lorque je l'applique directement sur le scène avec le code this.setMask(mask_mc).

Help, je vous en prie, je ne sais pu quoi faire, j'ai tout tenté.

Voici le code :
// profondeur des clips :
prof = 1;
// fréquence des flocons :
_root.nbr = 100;

// création d'un flocon générique :
_root.createEmptyMovieClip("baseParticule", prof);
with (_root.baseParticule) {
    _x = 0;
    _y = 0;
    _alpha = 0;
    lineStyle(40, 0xffffff, 127);
    moveTo(0, 0);
    lineTo(2, 0);
}
// comportement du flocon :
particule = function () {
    prof++;
    _root.baseParticule.duplicateMovieClip("p"+prof, prof);   
    _root["p"+prof]._y = 0;
    _root["p"+prof]._x = random(380);//largeur de la scène
    _root["p"+prof].sens = Math.random(4)*4;
    oh = _root["p"+prof].sens*2+1;
    _root["p"+prof]._width = oh;
    _root["p"+prof]._height = oh;
    _root["p"+prof]._alpha = oh*12;

    _root["p"+prof].onEnterFrame = function() {
        if (this._y<380) {//si la position 'y' est inférieure à la position du sol, on continue la descente         
            this._y += this.sens;
        }
        else {//si la position 'y' est égale à la position du sol, on stoppe la descente   
            this._alpha--;
            if (this._alpha<=0) {
                this.removeMovieClip();
                delete this.onEnterFrame;
            }
         }
    };
    updateAfterEvent();
};

// mitraillage de flocons :
baseInterv = setInterval(particule, _root.nbr);
stop();
Merci d'avance pour vos réponses

Tiger

1 réponse

Tigerlely Messages postés 14 Date d'inscription mardi 29 mai 2007 Statut Membre Dernière intervention 26 février 2010
4 déc. 2008 à 10:56
ca y est j'ai ma réponse :) désolé du dérangement lol
En fait, j'ai créé un conteneur auquel j'applique le mask.

Voici le code, si ca peut aider certain :

// profondeur des clips :
prof = 1;
// fréquence des flocons :
_root.nbr = 100;

//création d'un conteneur auquel on applique le mask
_root.createEmptyMovieClip("conteneur", 1);
conteneur.setMask(mask_mc);

// création d'un flocon générique :
_root.conteneur.createEmptyMovieClip("baseParticule", prof);
with (_root.conteneur.baseParticule) {
    _x = 0;
    _y = 0;
    _alpha = 0;
    lineStyle(40, 0xffffff, 127);
    moveTo(0, 0);
    lineTo(2, 0);
}

// comportement du flocon :
particule = function () {
    prof++;
    _root.conteneur.baseParticule.duplicateMovieClip("p"+prof, prof);   
    _root.conteneur["p"+prof]._y = 0;
    _root.conteneur["p"+prof]._x = random(380);
    _root.conteneur["p"+prof].sens = Math.random(4)*4;
    oh = _root.conteneur["p"+prof].sens*2+1;
    _root.conteneur["p"+prof]._width = oh;
    _root.conteneur["p"+prof]._height = oh;
    _root.conteneur["p"+prof]._alpha = oh*12;

    _root.conteneur["p"+prof].onEnterFrame = function() {
        if (this._y<380) {           
            this._y += this.sens;
        }
        else
        {
            this._alpha--;
            if (this._alpha<=0) {
                this.removeMovieClip();
                delete this.onEnterFrame;
            }// if alpha
         }//else
    };
    updateAfterEvent();
};

// mitraillage de flocons :
baseInterv = setInterval(particule, _root.nbr);
stop();
Tiger
0
Rejoignez-nous