Organiser un script compliqué (ou la communication entre classes)

Contenu du snippet

Si comme moi vous confondez ActionScript et C et que vous utilisez des classes (nouveautée de flash 7), voici un petit code qui permettra d'éviter d'avoir par exemple une classe contenant une variable qui pointe vers l'occurence d'une autre classe (afin de la modifier par exemple) et aussi d'éviter d'écrire les lignes de code supplémentaires (toujours pour la raison citée au dessus) : voici un code qui permet de gérer des messages...

Par exemple, si vous avez une classe Serveur et une classe Utilisateur (pour un chat)

Il suffit de mettre dans l'initialisation de la classe Utilisateur le petit code :
Messages.Add(this);

Et ensuite quand par exemple on recoit un message privé (dans la classe Serveur évidemment), il suffit de mettre :

Messages.Send("MessagePrivéReçu", new Array("le message", "nom de l'utilisateur"));

et de l'autre côté dans la classe Utilisateur :

function onMessage(mess, param) {
if (mess == "MessagePrivéReçu" && param[1] == this.name) { // on regarde si c'est la bonne occurence
this.ouvrirMessagePrivé(param[0]); // j'imagine une fonction qui ouvrirait une fenêtre de message privé avec comme paramètre le message
}
}

Source / Exemple :


class Messages {
	static var objects:Array;
	static var count:Number;
	
	static function Initialise() {
		objects = new Array();
		count = 0;
	}
	
	static function Add(obj:Object) {
		objects[count] = obj;
		count++;
	}
	
	static function Remove(obj:Object) {
		for(var i = 0; i < count; i++) {
			if (objects[i] == obj) {
				objects[i] = new Object();
			}
		}
	}
	
	static function Send(mess:String, param:Array) {
		var retour = null;
		for(var i = 0; i < count; i++) {
			if (retour == null || retour == undefined)
				retour = objects[i].onMessage(mess, param);
			else
				objects[i].onMessage(mess, param);
		}		
		return retour;
	}
	
	static function SendNoP(mess:String) {
		return Send(mess, new Array());
	}
}

Conclusion :


J'ai fait ce code parce que je suis sur un grand projet (un mmorpg) et que mon script commencait à devenir vraiment brouillon, avec ça c'est beaucoup plus organisé

A voir également

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.