begin process at 2012 05 27 19:32:15
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

MX2004: CLASS

 > ORGANISER UN SCRIPT COMPLIQUÉ (OU LA COMMUNICATION ENTRE CLASSES)

ORGANISER UN SCRIPT COMPLIQUÉ (OU LA COMMUNICATION ENTRE CLASSES)


 Information sur la source

Note :
Aucune note
Catégorie :MX2004: CLASS Classé sous :organisation, programme, complexe, classes, communication Niveau :Initié Date de création :29/07/2004 Date de mise à jour :19/12/2005 16:52:45 Vu :4 638

Auteur : CyberP

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

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

  • 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());
  • }
  • }
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é


 Historique

29 juillet 2004 12:26:12 :
30 juillet 2004 12:09:10 :
- Le retour des fonction onMessage est désormais pris en compte (ce qui permet des messages comme "GetName" où la fonction renvoie le nom - Il y a désormais une fonction SendNoP (NoP comme No Parameters) qui permet de simplifier un petit peu le script des classes
19 décembre 2005 16:51:04 :
Ajout des mots clés
19 décembre 2005 16:52:45 :
Modification des mots clés (petite gaffe)

 Sources du même auteur

CLIPS PLACÉS AU HASARD SUR LA SCÈNE

 Sources de la même categorie

Source avec Zip Source avec une capture LECTEUR MP3 AVEC LISTE DE LECTURE, STREAMING OU NON (COMPOSA... par eron
Source avec Zip ENREGISTRER DANS UN FICHIER TEXTE AVEC L'AIDE D'UN EXE par Mr_Qqn
Source avec Zip Source avec une capture CLASSE CALCULATOR par BananaTree
Source avec Zip Source avec une capture CLASS "PATERN" : PERMET LA CRÉATION DE REMPLISSAGE DE MOTIF ... par top30
Source avec Zip Source avec une capture MA CLASSE DE BASE SUR LES TEXTES ( STRINGS ) par snakeeater1

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture LOADER, EFFET FUMÉE AVEC PARTICULES par thepark001
Source avec Zip Source avec une capture MOTEUR 3D ISOMÉTRIQUE par BlackPage

Commentaires et avis

Commentaire de top30 le 30/07/2004 01:34:38

Je crois que tu as moyen de savoir qui appelle (le caller) je crois.. Donc dans vérifier la Class (instanceof) et de pouvoir continuer ou pas...

Enfin je crois...

Commentaire de top30 le 30/07/2004 01:36:10

PS : dans ta class Message, "remove()" ajoute :

object[i] = new Object () !!!

Commentaire de CyberP le 30/07/2004 12:06:02

oui c'est normal le object[i] = new Object()
comme ca l'objet que l'on veut enlever (qui est dans object[i]) est remplacé dans le tableau par un objet quelconque

si je fais delete object[i]; ca va enlever complètement l'objet (pas seulement du tableau)

évidemment je pourrais faire un script qui déplace tous les éléments du tableau qui suivent d'un rang en arrière pour enlever l'objet du tableau mais je préfère faire simple

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

communication entre 2 anims [ par tieutieu ] SalutJ'aimerais savoir si on peut faire communiquer deux animations flash entre elles????C'est à dire que une appel une fonction de l'autre par exempl Mise à jour animation Flash [ par Moska ] Bonjour,Je souhaite mettre en place une animation Flash, constituée d'images qui changent sur telle ou telle action de l'utilisateur. Mais pour change Appel programme JacaScript [ par Moska ] Salut,2 petites questions au menu du jour :Q1 : Pourriez-vous m'indiquer la syntaxe pour appeler un programme JavaScript (qui serait sur le serveur) e Flash communication center [ par tombal ] Flash communication center :Est ce que quelqu'un sais comment ca marche ?Si oui, faut-il payer un server flashcomm ou bien peut on faire soi meme le s communication entre plusieurs swf [ par sniper43 ] bonjour a tous!!alors voilà mon problème:j'ai créé un site en flash, et maintenant je veux en faire la version HTML dans lequels se trouvent le menu f Plugin Flash [ par kinouseb ] Bonjour.Je souhaite utiliser un programme contenant des animations flash sur un PC.Ce dernier ne possède pas le plugin flash !!!Je ne souhaite pas ins Appel d'un programme exe à partir de flash [ par angeicq ] bonjour,je travaille un projet sur flash et je dois appeler un programme exe (travaillé sous VB) par simple clic d'un bouton flash. je sais que je doi communication entre popup et fenêtre parent [ par flambyture ] Salut à tousVoilà mon soucis : j'ai une page html d'où s'ouvre une popup avec un flash dedans. Je voudrais pouvoir faire un lien dans mon flash qui me Flash MX et C++ [ par Escafr ] Voila dans le cadre d'un projet pour mon ecole je desirerais faire un programme en C++, et une interface en flash,ainsi le programme en C++ sera la se de la ROBOTIQUE avec Flash et PureDATA [ par bongawonga ] PUREDATA est un programme en open source qui permet de controler des externes (comme votre synthé ou un moteur électrique ou alors votre manette)http:


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales