Accueil > Forum > > > > Pattern Observer sans pattern ?
Pattern Observer sans pattern ?
mardi 12 décembre 2006 à 17:50:34 |
Pattern Observer sans pattern ?

jcsydney
|
Bonjour Je sais comment associer un clip à une classe AS2 pour lui donner un comportement (du genre un clip Balle dans un FLA et un Balle.as pour le comportement de la balle). Mais je ne sais pas comment faire en sorte qu'un clip soit "observateur" d'une instance de classe AS2 (et sans passer par le pattern Observer). Je m'explique : - j'ai une classe AS2 (par exemple Personne.as) qui fournit des méthodes publiques (par exemple des accesseurs), - j'ai un fichier IHM.fla qui a pour objectif de piloter Personne par une IHM basée sur des clips et des composants Flash 8, - j'ai une classe AS2 (par exemple IHM.as) qui devrait contenir le code associé aux composants/clips du FLA. Je voudrais que le constructeur de Personne crée (et lance) une instance de l'IHM (le FLA + le AS2 associé) en se passant comme paramètre à l'IHM de sorte que celle-ci puisse envoyer des informations à Personne. Comment faire cela ? Je sais que les constructeurs de MovieClip (avec Flash8) acceptent les paramètres, mais comme passer ce paramètre ? Voici les infos en détail: Personne.as____________________________
class Personne { // propriétés private var nom:String; private var prénom:String; private var age:Number; // constructeur public function Personne(unNom:String, unPrénom:String, unAge:Number) { this.nom = unNom; this.prénom = unPrénom; this.age = unAge; } // accesseurs // get function getNom():String { return this.nom; } function getPrénom():String { return this.prénom; } function getAge():Number { return this.age; } // set function setNom(unNom:String):Void { this.nom = unNom; } function setPrénom(unPrénom:String):Void { this.prénom = unPrénom; } function setAge(unAge:Number):Void { this.age = unAge; } }
IHM.as_______________________________________
class IHM extends MovieClip { function IHM() { trace("l'IHM est créée"); // ça, ça marche, je sais :-) } /* Voilà ce que je voudrais faire, mais je ne vois pas comment faire la liaison avec l'objet Personne... La classe Personne (donnée ici à titre d'exemple) propose des méthodes publiques de type "get" et "set" ou autre. Le but est que l'IHM (le .FLA) soit associée à ce fichier IHM.AS et qu'en même temps ce IHM.AS puisse envoyer des messages à la classe Personne. En gros, il faudrait que l'IHM pilote Personne, sans passer par des Design Patterns de type Observer. Je sais que je pourrais faire un constructeur comme ci-dessus, puis une méthode init(personne:Personne) qui ferait comme le constructeur IHM ci-dessous, mais je voudrais faire comme on le ferait en Java avec une IHM Swing qui prendrait unePersonne en paramètre de constructeur. import Personne; private var unePersonne:Personne; function IHM(personne:Personne) { this.unePersonne = personne; } function lireNom():String { // la zone "nom" de l'IHM doit afficher le nom, mais comment faire ??? this.nom.text = unePersonne.getNom(); } function lireAge():String { // la zone "age" de l'IHM doit afficher l'âge, mais comment faire ??? this.age.text = String(unePersonne.getAge()); } */ }
IHM.fla_____________ Sur la scène, il y a seulement un composant Button Flash 8 , nom d'occurence = "nom" et un autre "age", ainsi que deux composants TextInput Flash 8 de nom d'occurrence "txt_nom" et "txt_age". Merci d'avance pour votre aide.
|
|
mercredi 13 décembre 2006 à 13:28:58 |
Re : Pattern Observer sans pattern ?

Girou
|
Réponse acceptée !
Bonjour,
tu donnes la réponse dans ta question.
sur la scene tu places un code qui instancie une personne et qui instancie un IHM en passant Personne comme parametre.
import Personne import IHM
var unePersonne:Personne=new Personne("mon nom","mon prénom",33) var monIHM:IHM=new IHM(unePersonne)
stop();
monIHM pourra savoir a tout moment ou définir a tout moment l'age, le nom ou le prénom de la Personne (unePersonne)
Autre possibilité tu peux faire que IHM etende Personne. C'est a dire que toute instance de IHM comportera toujours une personne
class IHM extends Personne{ ...
Mais attention à la gestion des constructeurs,... tu dois alors passer en parametre les nom prénom et age et utiliser super() pour la création de la Personne
L'utilité de cette possibilité est que si tu as plusieurs types de 'personnes', elles auront toutes une IHM pour les piloter.
@+

|
|
jeudi 14 décembre 2006 à 15:51:59 |
Ok, mais en fait je me suis mal exprimé

jcsydney
|
Merci pour ta réponse, mais je me rends compte maintenant que je me suis mal exprimé  . En effet, mon problème est un peu différent. Cette fois, je vais essayer de l'expliquer clairement... Je voudrais séparer l'IHM de son comportement. Pour cela, supposons qu'on ait un FLA qui contient des clips et des composants. Pour simplifier, disons que sur la scène, on a : - un clip homme composé d'un clip tête et d'un clip corps (ce sont bien des sous-clips de homme; on écrirait homme.tête ou homme.corps pour y accéder) - un bouton btn_a et un bouton btn_b (des boutons de Flash par exemple) Le FLA ne contient donc QUE la représentation graphique. Tout le code (celui des boutons et des clips) devrait être dans un seul FLA. Je ne sais pas comment faire... Je pensais qu'en mettant les boutons et le clip homme dans un clip Test relié à Test.AS, je pouvais écrire: (1) import mx.controls.*; class Test extends MovieClip { (2) var btn_a:Button function Test () { btn_a.enabled=true; homme.tête._alpha=50; } } que je mette ou non les lignes (1) et (2), ça ne marche pas, voire je me fais jeter à la compil. Y a-t-il moyen de faire ce que je veux, ou bien Flash ne peut-il pas résoudre ce type de méthode de travail ? (séparer l'IHM de son comportement) Merci d'avance pour les réponses.
|
|
jeudi 14 décembre 2006 à 16:28:47 |
Re : Pattern Observer sans pattern ?

Girou
|
Réponse acceptée !
Flash peut (presque) tout faire  maintenant, le vois que tu mets var btn_a:ButtonLà, tu défini une variable, MAIS tu n'as pas encore instancié ton bouton !! De plus, pour pouvoir instancier un boutton, si j'ai bonne mémoire, il doit être dans la bibliotheque (tu place une occurence d'un bouton sur la scene et puis tu le retire, les éléments nécessaires seront placés dans la bibliotheque) Autre chose, si tu as un 'homme' sur la scene, tu peux lui affecteur une classe dans les propriété du clip (bibliotheque) et alors tu sépares completement le graphisme du code affecté au clip (2) var btn_a:Button function Test () { btn_a.enabled=true; homme.tête._alpha=50; } }
Il est normal que la tête de homme ne se mette pas à _alpha 50 puisque dans la classe test rien ne défini ce qu'est homme En fait, tu devrait procéder comme ceci import mx.controls.*; class Test extends MovieClip { var btn_a:Button var homme:movieClip // ou var homme:Personne function Test () // C'est le constructeur { // créer btn_a !!! btn_a.enabled=true; // soit tu définis dès le départ qu'est ce qu'est homme genre // homme=_root.lebonhomme // soit tu passe en parametre a Test la référence a homme homme.tête._alpha=50; } } @+ 
|
|
jeudi 14 décembre 2006 à 20:18:28 |
Re : Pattern Observer sans pattern ?

jcsydney
|
Tout d'abord merci pour la célérité de tes réponses, ainsi que leur qualité. Ca marche !!! Mais je ne comprends pas où était mon erreur car j'avais bien les composants dans la biblio et sur la scène. Après avoir refait un nième essai, ça marche comme je veux. Pas grave que j'ai pas trouvé où l'erreur. Le principal est que ça marche et que j'ai eu confirmation que c'était possible.
Encore merci pour ton aide. JC
|
|
Cette discussion est classée dans : function, string, age, classe, ihm
Répondre à ce message
Sujets en rapport avec ce message
classe [ par sangho ]
Ma classe contenue dans le fichier table_membre.as :lass table_membre { var nom:String; function get_champ():String { nom = "lol"; return nom; } }
héritage actionscript 2 [ par afond ]
Bonjour, J'ai un problème d'héritage, j'ai deux classe CQuestion et CQuestionS qui hérite de l'autre. Voilà le code: class CQuestion { &
Appel d'une méthode de classe à partir d'un onPress lui-même inclu dans une méthode... [ par goldenboy68 ]
Hello TLM... Je sèche encore sur de l'AS 2! Je charge des miniatures avec une classe "Pellicule" Première méthode: public var chargeur:MovieClipLo
probleme avec classe étendue et getChildByName [ par sprullex ]
bonjour/bonsoir j'ai d'abord créé un movieClip que j'ai nommé [i]carre[/i]. Je l'ai exporté en AS3. j'ai déclaré une classe [i]carreDiagonale[/i] hér
class, renvois de String à mon script AS3 [ par mikouRoux ]
Salut à tous,Voilà un moment que je m'arrache les cheveux pour comprendre comment renvoyer une chaine de caractère en sortie d'une classe en actionscr
À propos de la classe Vector [ par inaden ]
Bonjour,question de cours...Je viens de découvrir qu'il existe une classe Vector, d'après ce qui est dit, plus optimiser que la classe Array, mais plu
SlideShow flash actionscript 2.0 [ par godsbox ]
Bonjour,J'ai comme projet de faire un slideshow en flash ( actionscript 2.0 )Le slideshow comporte 4 images de publicité ( chargé de l'extérieur )défi
Problème d'affichage de variable [ par Sub_Mat ]
Bonjour à tous,Voilà je vous explique, je souhaiterai afficher l'actualité en continu sur mon site en flash, et pour cela je charge les données dans u
FUnction RollOver [ par cust100 ]
Bonjour à tous,J'ai un bouton nommé img1 qui quand on passe sa souris dessus il ouvre une autre animation .swf.Mon probleme est que je voudrais que q
desactiver un bouton a un instant "T" [ par linece ]
Bonjour Tout le mondeVoila peut etre une question simple pour certain.Je suis débutante et je souhaite rendre inactif mon clip au premier plan "closeb
Livres en rapport
|
Derniers Blogs
[WF4] PASSAGE D'ARGUMENTS LITERAL, VISUALBASICVALUE OU LAMBDAVALUE?[WF4] PASSAGE D'ARGUMENTS LITERAL, VISUALBASICVALUE OU LAMBDAVALUE? par JeremyJeanson
Avec la sortie de la RC de Visual Studio 2010, Microsoft a mis un peu les points sur leS i en ce qui concernait le passage d'arguments. Mais nous somme un certain nombre à avoir pris ce changement comme un coup dur. Pour résumer la situation : à la sortie...
Cliquez pour lire la suite de l'article par JeremyJeanson [RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|