Selection multiple

Soyez le premier à donner votre avis sur cette source.

Vue 6 429 fois - Téléchargée 802 fois

Description

Petit code sans prétention qui permet de faire une sélection de plusieurs clips en draggant sa souris. Les clips sélectionnés changent d'apparence, et sont stockés dans un tableau ce qui permet de faire des actions dessus.
Un bouton de déselection réinitialise le tout.

Source / Exemple :


var tabObjetsSelect = new Array();

this.onMouseDown = function(){
	
	attachMovie("selection","selectionRect",1);
	selectionRect._x=_xmouse;
	selectionRect._y=_ymouse;
	selectionRect.debutClicX=_xmouse;
	selectionRect.debutClicY=_ymouse;
	selectionRect._width=0;
	selectionRect._height=0;
	
	selectionRect.onMouseMove = function(){
	
		this._width=Math.abs(_xmouse-this.debutClicX);
		this._height=Math.abs(_ymouse-this.debutClicY);	
		if(_xmouse<this.debutClicX)this._x=_xmouse;	
		if(_ymouse<this.debutClicY)this._y=_ymouse;
		updateAfterEvent();
	}
	selectionRect.onMouseUp = function(){
		
		if(!Key.isDown(Key.CONTROL))this._parent.deselectionner();
		
		for(var objet in this._parent){
			if(typeof this._parent[objet]=="movieclip" && this._parent[objet]!=this && this.hitTest(this._parent[objet])){
				
				actionSelection(this._parent[objet]);
			}
		}
		
		this.removeMovieClip();
	}
}

function actionSelection(pObjet){
	if(pObjet.selectionne!=true){
		pObjet.selectionne=true;
		tabObjetsSelect.push(pObjet);
		alphaTrans(pObjet,25);
	}
	
}

function deselectionner(){
	trace(this);
	for(var i=0;i<tabObjetsSelect.length;i++){
		tabObjetsSelect[i].selectionne=false;
		alphaTrans(tabObjetsSelect[i],100)	
	}
	tabObjetsSelect = new Array();
}

function alphaTrans(pObjet,pAlpha){
	var couleur = new Color(pObjet);
	var transCouleur = couleur.getTransform();
	transCouleur.aa=pAlpha;
	couleur.setTransform(transCouleur);
}

deselection.onPress = deselectionner;

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

top30
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010
-
Y a de l'idée...
[7/10]
top30
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010
-
Quelques conseils :
Essaie d'tuliser des Events qui donnerait aux autres l'envie d'utilser ton code.

Tu pourrais essayer de regrouper tout cela dans un seule classe.
Une "SquareSelection". Apres tu y mets les events :
onPress : Début de sélection
onResize : Quand la sourie bouge
onSelect : Quand un élément est considéré comme sélectionné
onUnselect:Quand les éléments sont considérés comme déselctionnés.


Autre petits détails :
tu créer un nouveau tableau des éléments sélectionnés vide à la fin de la déselection...
function deselectionner(){
//...
tabObjetsSelect = new Array();
}

C'est un non sens puisque tu déselectionnes, créer ton tableau vide en DEBUT DE SELECTION :
selectionRect.onMouseMove () {
tabObjetsSelect = new Array();
}
C'est plus "logique" Ca évite de chercher là ou tu là mis si tu dois modifier ta source aprés une longue période de non utilisation.

Bref.. Sympa qund même...
libertyblood
Messages postés
25
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
8 août 2006
-
La prog objet est tendue avec la version MX du boulot :)
cs_bali_balo
Messages postés
1381
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
1 novembre 2010
-
Moi je vais essayer de faire en AS2 avec ton package d'Events top30...
ça fait un ptit bout de temps que j'avais envie de m'interesser aux Events.
Sa serait VACHEMENT utile pour mes packages que je développe en ce moment.
Parce que par exemple pour certaine classe qui hérite de la classe MovieClip, je rajoute des fonctions aux instances de mes classes ou bien j'en redéfinis..et c'est pas très beau...:S
Donc ce serait super d'utiliser mes propres événements pour gérer tous ça!


bali_balo....=]

(note perso : 8.5/10 que j'arrondi à 9/10 ^^)

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.