Soyez le premier à donner votre avis sur cette source.
Vue 5 501 fois - Téléchargée 690 fois
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);
16 juil. 2005 à 12:51
Peg'
16 juil. 2005 à 13:04
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.
16 juil. 2005 à 15:18
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);
16 juil. 2005 à 15:36
16 juil. 2005 à 19:09
"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.