Clic ecarteur

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 443 fois - Téléchargée 16 fois

Contenu du snippet

Petit script pour faire place nette à l'endroit où on clique. Tout le script est sur le calque action; il m'a évité une timeline de 30 000 frames!
Ce n'est pas évident à expliquer, jugez plutôt par vous-même.
La source est téléchargable ici:
http://www.ze-group.com/telechargement/ecarteur.zip

Source / Exemple :


//DEFINITION DES POSITIONS DE BASE DE CHAQUE TRAIT
for (i=1; i<=10; i++) {
	this["xbase"+i] = this["trait"+i]._x;
}
//DEFINITION DE LA LARGEUR DE BASE DE LA SCENE
maxilargeurbase = Stage.width;
/////////////////
////FONCTIONS////
/////////////////
function barrezvous() {
	temporisationretour = 1;
	difflargeur = (maxilargeurbase-maxilargeur)/2;
	for (i=1; i<=10; i++) {
		this["aleat"+i] = random(50);
		//DEFINITION DU BUT A ATTEINDRE
		//CONDITION SI LE TRAIT EST A GAUCHE OU A DROITE DU CLIC
		if (clix<=this["trait"+i]._x) {
			//but = bord droite
			this["but"+i] = maxilargeur-this["aleat"+i]+difflargeur;
		} else {
			//but = bord gauche
			this["but"+i] = this["aleat"+i]+difflargeur;
		}
	}
	//DEPLACEMENT DES TRAITS
	_root.onEnterFrame = function() {
		for (i=1; i<=10; i++) {
			//REGLE LA VITESSE DE DEPLACEMENT EN DIVISANT + OU -
			this["deplace"+i] = (this["trait"+i]._x-this["but"+i])/6;
			this["trait"+i]._x = this["trait"+i]._x-(this["deplace"+i]);
			this["diff"+i] = Math.abs(this["trait"+i]._x-this["but"+i]);
			if (this["diff"+i]<=5) {
				temporisationretour++;
			}
			if (temporisationretour>=100) {
				delete enterFrame;
				//LANCE LA FONCTION
				reviens();
			}
		}
	};

}
function reviens() {
	_root.onEnterFrame = function() {
		for (i=1; i<=10; i++) {
			//REGLE LA VITESSE DE DEPLACEMENT EN DIVISANT + OU -
			this["deplace"+i] = (this["trait"+i]._x-this["xbase"+i])/40;
			this["trait"+i]._x = this["trait"+i]._x-(this["deplace"+i]);
			this["diff"+i] = Math.abs(this["trait"+i]._x-this["xbase"+i]);
			if (this["diff"+i]<=2) {
				delete enterFrame;
			}
		}
	};

}
///////////////////
////ACTION CLIC////
///////////////////
bouton.onPress = function() {
	maxilargeur = Stage.width;
	ecarteur.gotoAndPlay(1);
	ecarteur._x = _xmouse;
	ecarteur._y = _ymouse;
	clix = _xmouse;
	//LANCE LA FONCTION
	barrezvous();
};

Conclusion :


Si vous voulez un déplacement plus ordonné, il suffit de virer la variable [aleat]

A voir également

Ajouter un commentaire

Commentaires

choinet
Messages postés
89
Date d'inscription
mardi 8 février 2005
Statut
Membre
Dernière intervention
3 novembre 2008
-
très bien
pour la note c'est pas flateur mais au moins j'aurais appris quelque chose.
top30
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010
-
/**
* A coller dans la première frame dans document Flash de 300x250, fond noir, 25 FPS minimun...
* Au click down, les barres s'écartent, au click up, chacunne revienn à sa position d'origine.
**/



var barList : Array = [];
var barMax : Number = 30;
//
//
var i : Number = - 1;
while ( ++ i < barMax) barList.push (getBar (this, 'bar' + i, 1, 20));
//
//
this.onMouseDown = function () : Void
{
for (var i in barList) barList [i].go ();
};
this.onMouseUp = function () : Void
{
for (var i in barList) barList [i].back ();
};
//
//
function getBar (target : MovieClip, name : String, min : Number, max : Number) : MovieClip
{
var bar : MovieClip = target.createEmptyMovieClip (name, target.getNextHighestDepth ());
bar._x = (Math.random () * 320) - 10;
bar._n = bar._x;
//
var width : Number = min + (Math.random () * (max - min));
bar.beginFill (0xFFFFFF, (Math.random () * 90) + 10);
bar.lineTo (width, 0);
bar.lineTo (width, 200);
bar.lineTo (0, 200);
bar.lineTo (0, 0);
//
//
bar.go = function () : Void
{
var end : Number = 350;
if (_root._xmouse > (this._x+this._width/2)) end = - 50;
//
this.onEnterFrame = function () : Void
{
this._x += (end - this._x) / 3;
if (Math.round (this._x) == Math.round (end)) delete this.onEnterFrame;
};
};
bar.back = function () : Void
{
this.onEnterFrame = function () : Void
{
this._x += (this._n - this._x) / 6;
if (Math.round (this._x) == Math.round (this._n)) delete this.onEnterFrame;
};
};
return bar;
}


Désolé...
3/10, le 3 c'est pour l'idée !
choinet
Messages postés
89
Date d'inscription
mardi 8 février 2005
Statut
Membre
Dernière intervention
3 novembre 2008
-
OK
j'ai un vrai problème avec l'envoi des sources : erreur de je sais pas quoi. Le message me dit que Nix est au courant...en attendant, je met la source en ligne à cette adresse :
http://www.ze-group.com/telechargement/ecarteur.zip

Bon flash à tous
choinet
Messages postés
89
Date d'inscription
mardi 8 février 2005
Statut
Membre
Dernière intervention
3 novembre 2008
-
Merci pour l'info, je ne connaissais pas cette manière de faire
Je vais essayer de l'améliorer et la reposter plus tard.
Je ne pensais pas que ma sources était passée...il y a eu beaucoup de bugs sur flashkod ces temps ci non?
top30
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010
-
Y a pas de source !!!!!
Facon c'est mal 'encodé". Exemple, tu reboucles à "i" sas arret.
Autant faire....


// STOCKAGE TRAITS ET MEMORISATION
_traitsList= [] ;
for (i=1; i<=10; i++) {
var trait = this["trait"+i] ;
//
trait.origineX= trait._x ;
_traitsList.push(trait) ;
}

// CHAQUE FOIS QUE TU VEUX FAIRE UN "TRUC" SUR TOUT LES TRAITS
for( var i in _traitsList ){
var traitActuel= _traitsList[i] ;
etc....
}
// PAR EMPLE :
function barrezvous() {
temporisationretour = 1;
difflargeur = (maxilargeurbase-maxilargeur)/2;
for( var i in _traitsList {
var trait= _traitsList[i] ;
//

// NULL ! Pourquoi encombré le clip de variable porpre au "trait:
// this["aleat"+i] = random(50);
trait.random= Math.round( Math.random()*50) ;

//DEFINITION DU BUT A ATTEINDRE
//CONDITION SI LE TRAIT EST A GAUCHE OU A DROITE DU CLIC
var clickGauche = (clicx<= trait._x) ;
trait.but= (trait.random+difflargeur)-(clickGauche? maxilargeur : 0 );
}
etc...

J'attend la source pour mettre note....

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.