Boules de neige avec fonction duplicatemovieclip (modifiée compatible mx)

Description

Ce code créer tout d'abord un cercle en action script (merci cerdrcici).
Ce cercle est ensuite répliqué 200 fois chaque clip ayant une position, un alpha , un yscale et xscale aléatoire.
Leur déplacement vertical est regulier tandis que leur déplacement horizontal suit les mouvement d'une fonction cosinus (ce qui donne un effet de va et vien)
Tout le script est positioné sur l'image 1 du calque action il n'y a que du code, rien dans la blibliothéque et seulement une image

Source / Exemple :


// On crée ici l'objet MovieClip.prototype.asrond comprenant 4 variables : position horizontale, position verticale, rayon du cercle et facteur de qualitée.
//Merci cedricici pour le code ! (http://www.flashkod.com/)
MovieClip.prototype.asrond = function(X, Y, R, Q) {
	Q *= 4;
	alpha = (2*Math.PI/Q);
	with (this) {
		lineStyle(1, 0xFFFFFF, 100);
		beginFill(0xFFFFFF);
		moveTo(X, Y+R);
		for (i=0; i<Q; i++) {
			Bx = (Math.sin(i*alpha)*R)+(Math.cos(i*alpha)*(Math.tan(alpha/2)*R));
			By = (Math.cos(i*alpha)*R)-(Math.sin(i*alpha)*(Math.tan(alpha/2)*R));
			Cx = Math.sin((i+1)*alpha)*R;
			Cy = Math.cos((i+1)*alpha)*R;
			curveTo(X+Bx, Y+By, X+Cx, Y+Cy);
		}
		endFill();
	}
};
// ici on crée un Clip vide de nom boule sur le level 0
_root.createEmptyMovieClip("boule", _root);
// on applique le prototype asround a boule
boule.asrond(-10, -10, 7, 2);
// i = 1 ...
i = 1;
// si i est inferieur a 200
while (i<200) {
	// on copie le clip boule et on lui attribue le nom boule+i (si i = 2, boule2)
	boule.duplicateMovieClip("boule"+i, i);
	// la position horizontale de ce nouveau clip sera egale a un nombre au hasard compris entre 0 et 1 multiplié par 500
	_root["boule"+i]._x = Math.random()*(550);
	// la position verticale de ce nouveau clip sera egale a un nombre au hasard compris entre 0 et 1 multiplié par 400
	_root["boule"+i]._y = Math.random()*(400);
	// le niveau d'alpha de ce nouveau clip sera egale a un nombre au hasard entre 0 et 99
	_root["boule"+i]._alpha = random(100);
	// la taille horizontale de ce nouveau clip sera egale a un nombre au hasard entre 0 et 99 pour cent de la taille initiale de "boule"
	_root["boule"+i]._xscale = random(100);
	// la taille verticale de ce nouveau clip sera egale a sa taille horizontale
	_root["boule"+i]._yscale = _root["boule"+i]._xscale;
	// ici on definie la direction des boules
	_root["boule"+i].onEnterFrame = function() {
		// la position verticale du nouveau clip augmentera de quatre 12 fois par seconde
		this._y += 4;
		// // la position horizontale du nouveau clip augmentera du cosinus (de la position verticale multiplié par 3) multiplié par cinque 12 fois par seconde
		this._x += Math.cos(this._y*3)*5;
		// si la position de la boule est superieur a 400 (le bas de la scene) la boule se replace en haut de la scene
		if (this._y>=400) {
			//la boule se replace en haut de la scene
			this._y = 0;
		}
	};
	// on augmente i de 1
	i++;
}

Conclusion :


Merci a tous et bonne prog !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.