[as2] déplacer par clics un rectangle dans une zone délimitée

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 800 fois - Téléchargée 15 fois

Contenu du snippet

Ceci est mon tout premier code ;). Ce script n'a donc pas pour but de faire avancer ActionScript (surtout 2.0 !) mais simplement d'aider des débutants ou autres qui seraient coincé à ce niveau là.

Le but était de pouvoir déplacer un rectangle dans une zone délimitée.
Un des problèmes survenus était le fait qu'en cliquant trop prêt des limites, le cadre en sorte. Ceci à été résolu par l'intervention du membre Orange73 (que je remercie encore !), ici :
http://www.flashkod.com/forum/sujet-DEFINIR-LIMITES-AS2_1301282.aspx

Source / Exemple :


my_btn.onPress = function() {
	trace ("mouse X = " + _xmouse);
	trace ("mouse Y = " + _ymouse);
	var X = _xmouse;
	trace ("var X = " + X);
	var Y = _ymouse;
	trace ("var Y = " + Y);
	cadre._x = X
	cadre._y = Y
	
if(cadre._y < 135){
     cadre._y = 135;
}

if(cadre._y > 266){
     cadre._y = 266;
}

if(cadre._x < 125){
     cadre._x = 125;
}

if(cadre._x > 425){
     cadre._x = 425;
}

}

Conclusion :


Les traces m'ont permis de vérifier certaines distances, sentez-vous donc libre de les enlever et de faire ce que vous voulez de ce code, bien sûr ;) !

La prochaine étape serait d'ajouter une fonction Drag'n'Drop pour rendre plus intuitif cette application.

J'espère que ce script pourra vous aider.

A voir également

Ajouter un commentaire

Commentaires

on_drag_on
Messages postés
1275
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
6 octobre 2010
-
Salut,

Oué ... enfin c'était pas plus dur de le transposer en AS3 du coup ...

my_btn.addEventListener(MouseEvent.CLICK, functionCadre);
function functionCadre(event:MouseEvent):void {
var X = mouseX;
var Y = mouseY;
cadre.x = X
cadre.y = Y
if(cadre.y < 135){
cadre.y = 135;
}
if(cadre.y > 266){
cadre.y = 266;
}
if(cadre.x < 125){
cadre.x = 125;
}
if(cadre.x > 425){
cadre.x = 425;
}
}
pegase31
Messages postés
6161
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
6 -
il y a une méthode encore plus belle et moins lourde :

var X:Number, Y:Number;
my_btn.addEventListener(MouseEvent.CLICK, functionCadre);
function functionCadre(evt:MouseEvent):void {
X = restrict(evt.localX, 125, 425);
Y = restrict(evt.localY, 135, 266);
}
function restrict(nb:Number, min:Number, max:Number):Number {
return (nb<min) ? min : (nb>max) ? max : nb;
}

Il est possible de mettre des int à la place des Number, mais en cas de zoom, on perd la précision.
Pour les explications, n'hésitez pas à demander

Peg'
devilwu
Messages postés
10
Date d'inscription
lundi 8 décembre 2008
Statut
Membre
Dernière intervention
22 avril 2009
-
Salut, je ne connais pas encore assez bien AS3 pour m'y lancer mais je vous remercie car avec vos 2 codes je vais pouvoir étudier ça d'un peu plus prêt ;) !
Merci.
pegase31
Messages postés
6161
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
6 -
à part l'ajout du listener pour déclencher la fonction, il n'y a aucune fonction spécifique AS3 dans nos deux codes. Le reste fonctionne trés bien en AS2.

Peg'
on_drag_on
Messages postés
1275
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
6 octobre 2010
-
Eh ben, je me demandais si il y avait lieu de poser ce code en source ici et voilà que je découvre cette propriété restrict, et je vois qu'elle est aussi très intéressante au niveau d'un champ de texte :)
Merci ;=)

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.