Rectangle de selection

Soyez le premier à donner votre avis sur cette source.

Vue 5 501 fois - Téléchargée 690 fois

Description

Une fonction simple qui permet de créer un rectangle de selection facilement paramétrable. la fonction dessine un clip rectSelect sur la scène et se paramètre comme ceci:
RectangleSelection(profondeur, couleurFond, alphaFond, couleurContour, alphaContour, epaisseurContour)
Cliquez, glissez, relachez!:)

Source / Exemple :


function RectangleSelection(level, couleurFond, couleurContour, alphaFond, alphaContour, epaisseurContour) {
	if (!level["rectSelect"]) {
		var leClip = level.createEmptyMovieClip("rectSelect", level.getNextHighestDepth());
		leClip.couleurFond = couleurFond;
		leClip.couleurContour = couleurContour;
		leClip.alphaFond = alphaFond;
		leClip.alphaContour = alphaContour;
		leClip.epaisseurContour = epaisseurContour;
		leClip.onMouseDown = function() {
			this._x = _root._xmouse;
			this._y = _root._ymouse;
			this.click = true;
		};
		leClip.onMouseUp = function() {
			this.clear();
			this.click = false;
		};
		leClip.onMouseMove = function() {
			if (this.click) {
				var maxDepth = this._parent.getNextHighestDepth();
				this.clear();
				this.beginFill(this.couleurFond, this.alphaFond);
				this.lineStyle(this.epaisseurContour, this.couleurContour, this.alphaContour);
				this.moveTo(0, 0);
				this.lineTo(0, this._ymouse);
				this.lineTo(this._xmouse, this._ymouse);
				this.lineTo(this._xmouse, 0);
				this.lineTo(0, 0);
				this.endFill();
				this.swapDepths(maxDepth);
			}
			updateAfterEvent();
		};
	}
}
RectangleSelection(this, "0x00FF00", "0x00FF00", 10, 100, 1);

Codes Sources

A voir également

Ajouter un commentaire Commentaires
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
16 juil. 2005 à 12:51
Pas mal, mais en plus de 12 img/sec, ça aurait été encore mieux ....

Peg'
cs_michto Messages postés 79 Date d'inscription dimanche 26 octobre 2003 Statut Membre Dernière intervention 11 août 2005
16 juil. 2005 à 13:04
'lut
Bon exemple de fonction avec paramétres. Trés clair, trés bien. Un p'tit conseil de rien du tout : quand tu teste un booléen (clip) tu peux directement ecrire if(clip) et if(!clip). C'est rien mais ça fait toujours une petite opération en moins ;). Et puis je ne sais absolument pas si ça change quelquechose, mais tu recrées ton mc à chaque mouvement de souris ?? Des avis sur le sujet ?

Sinon, tu appelle ta fonction "RectangleSelection". "RectangleDessiner" ou un nom dans le genre conviendrai mieux (Y a pas vraiment de selection :). Les coordonnées du rectangle dessiné pourrais être la selection par exemple...)

Ciao. Bonne continuation.
Prouprou_Sensei Messages postés 517 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 24 octobre 2006 1
16 juil. 2005 à 15:18
Salut!
Sympa comme code, mais c'est vraix que le createEmptyMovieClip a chaque mouseMove est inutile, il suffit d'utiliser clear() et de creer le clip une fois au premier clique de la souris, ou meme a l'apel de la fonction.
Dans le genre:

function RectangleSelection(profondeur, couleurFond, alphaFond, couleurContour, alphaContour, epaisseurContour) {
_root.createEmptyMovieClip("rectSelect", profondeur);
ecouteur = new Object();
Mouse.addListener(ecouteur);
ecouteur.onMouseDown = function() {
xMouse = _root._xmouse;
yMouse = _root._ymouse;
clic = true;
};
ecouteur.onMouseUp = function() {
_root.rectSelect.clear();
clic = false;
};
ecouteur.onMouseMove = function() {
if (clic) {
with (_root.rectSelect) {
clear();
beginFill(couleurFond, alphaFond);
lineStyle(epaisseurContour, couleurContour, alphaContour);
moveTo(xMouse, yMouse);
lineTo(xMouse, _root._ymouse);
lineTo(_root._xmouse, _root._ymouse);
lineTo(_root._xmouse, yMouse);
lineTo(xMouse, yMouse);
endFill();
}
}
};
}
RectangleSelection(1, "0x00FF00", 10, "0x00FF00", 100, 1);
cs_apokalypse Messages postés 4 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 18 juillet 2005
16 juil. 2005 à 15:36
Merci pour ces précieux conseils, j'ai modifié le code en conséquence. Pour ce qui est du nom de la fonction c'était juste pour être clair quand à l'usage que l'on peut faire de cette dernière. :)
BananaTree Messages postés 337 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 2 novembre 2010
16 juil. 2005 à 19:09
slt,

"Pas mal, mais en plus de 12 img/sec, ça aurait été encore mieux ...."

pensez à utiliser updateAfterEvent :
ecouteur.onMouseMove = function() {
if (clic) {
with (_root.rectSelect) {
clear();
beginFill(couleurFond, alphaFond);
lineStyle(epaisseurContour, couleurContour, alphaContour);
moveTo(xMouse, yMouse);
lineTo(xMouse, _root._ymouse);
lineTo(_root._xmouse, _root._ymouse);
lineTo(_root._xmouse, yMouse);
lineTo(xMouse, yMouse);
endFill();
}
}
updateAfterEvent();
};

@+ et bon code.

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.