Comment séparer une IHM et l'instancier après ?

jcsydney Messages postés 22 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 24 novembre 2009 - 29 mai 2007 à 23:22
phpemilie Messages postés 6 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 15 janvier 2008 - 31 mai 2007 à 11:06
Bonjour
Je suis en train de me casser la tête avec l'instanciation d'objets en AS2. Je connais bien AS1 et AS2, mais j'ai un problème pour faire l'équivalent en AS2 d'un truc que je faisais en AS1. Voici le sujet :
- le fichier "homme.fla" ne contient qu'un symbole clip "homme" dans la bibliothèque, dont le contenu du clip est purement graphique (pas de code AS), je précise qu'il n'y a rien du tout (ni dessin, ni code, etc.) sur la scène ou dans le scénario. De plus, le symbole est lié à la classe AS2 "homme.as".
- j'ai la même chose avec un fichier "voiture.fla", qui ne contient qu'un clip "voiture" dans la bibliothèque, et dont le contenu du clip est purement graphique (pas de code AS), la scène et le scénario sont vides comme pour "homme.fla". Le symbole est lié à la classe "voiture.as".
- le fichier "homme.as" contient le code AS décrivant le comportement du clip "homme" de "homme.fla". Cette classe "homme.as" étend MovieClip et contient :
* un constructeur
* une méthode init (...)
* des accesseurs sur les propriétés du clip Homme
* des méthodes telles ques onLoad, onRollOver,... qui décrivent le comportement que doit avoir chaque instance du clip "homme" dans "homme.fla"
* d'autres méthodes, classiques en objet (calculs divers).
- le fichier "voiture.as" fait le même genre de chose que "homme.as", c'est-à-dire qu'elle décrit le comportement de chaque instance du clip "voiture", etc.
- enfin, j'ai un fichier "start.fla" dont j'aimerais que le code permette de créer des instances de "homme" et "voiture", sachant qu'évidemment j'aimerais que quand je crée une instance d'homme, j'obtienne sur la scène un clip (avec un nom d'instance que j'aurai choisi) issu des .FLA avec le comportement issu des .AS.
Comment faire ??? Bien sûr, je pourrais tout mettre dans un seul fichier, mais le but est très clair : le comportement des clips doit être totalement extérieur aux "fla", parce que j'ai un but de conception objet complexe que je ne détaille pas ici pour ne pas embrouiller la question.
J'ai essayé différentes solutions (avec des attachMovie, loadMovie,...) mais rien ne marche bien ou alors ça ne répond pas à ma demande. Du coup, je commence à me demander si Flash est capable de supporter ce type de conception objet.

J'attends avec impatience vos solutions...

Merci d'avance.

8 réponses

cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
30 mai 2007 à 13:56
Cela doit être plutôt un problème de bibliothèque partagée entre fla. C'est pour cela que je te conseil de mettre tous dans le même fla.

"le comportement des clips doit être totalement extérieur aux "fla" :
Le comportement des clips ne dépend absolument pas du fla.
Enfin je comprend que tu veux séparer tes éléments ainsi. Je n'ai pas encore bien saisie le fonctionnement des bibliothèque partégée mais je suis sûr que cela t'aidera, regarde un peu les tutos sur le net

bali_balo....=]
0
cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
30 mai 2007 à 13:57
des bibliothèqueS</gras></italique> partégéeS

grrrrrrrrrr

0
jcsydney Messages postés 22 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 24 novembre 2009
30 mai 2007 à 21:57
Hummmm, non, je ne crois pas que les bibliothèques partagées soient la solution à mon problème. Ca permet effectivement d'optimiser les biblios, mais pas de faire dans main.fla des "new Homme(....)" ET des "new Voiture(...)" qui vont créer des instances des clips extraits de voiture.fla(swf) et homme.fla(swf)  et qui auront les comportements écrits dans voiture.as et homme.as. :-( Je commence à croire que sur ce plan-là, Flash 8 est loin d'être un vrai environnement/langage orienté-objet comme Java peut l'être, ou encore mieux Smalltalk. Peut-être que le nouveau Flash pourra faire ça ???
JC
0
cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
30 mai 2007 à 22:20
Je commence à croire que sur ce plan-là, Flash 8 est loin d'être un
vrai environnement/langage orienté-objet comme Java peut l'être, ou
encore mieux Smalltalk

Ohhh que si :)



Sinon pour ton problème tu ne peut pas travailler avec plusieurs swf différents sans utiliser le principe des bibli partagées. Sinon l'autre solution serait de charger tes swf (voitures.swf, hommes.swf, etc.) et de jouer avec les clips qui sont dedans.
Je ne comprend pas vraiment ta question :S...

bali_balo....=]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jcsydney Messages postés 22 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 24 novembre 2009
30 mai 2007 à 22:59
Imagine .... Avec Java par exemple, et pour mon exemple, on écrirait qq chose qui ressemblerait à (j'ai mis du pseudo-code):
class MonExemple
{
import Voiture;
import Homme;

var voiture1, voiture2, voiture3:Voiture;
var homme1, homme2: Homme;
...

public main(...)
{
voiture1=new Voiture("renault", "clio", "rouge", 100);  //ceci créera un objet GRAPHIQUE et ayant un comportement pour sa dynamique , par exemple sur le rollover, le clic, etc...

voiture2=new Voiture("peugeot", "206", bleu", 80); //idem, autre objet graphique, avec d'autres paramètres, et avec le même comportement que la voiture précédente
...
homme1=new Homme("philippe", "DUPONT"); // créé un objet graphique ayant un comportement
homme2=new Homme("André", "FORESTIER"); // idem avec d'autres paramètres.
}
}

class Voiture
{
var marque, modèle: String;
var vitesseInitiale: Integer;

public Voiture (marque, modele, vitesse)
{
this.marque=nom;
this.modele=modele;
this.vitesseInitiale=vitesse;
}

...
public onPress()
{
this.vitesse=this.vitesse+10;
}

...

}

(même genre pour Homme)

Est-ce que c'est plus clair ? Tu vois, le code Java de chaque classe contiendrait tout ce qu'il faut pour afficher les graphismes des instances et en plus il contient le comportement, mais pour ce que je veux faire chaque classe doit être indépendante. Donc je ne peux pas mettre des SWF dans un FLA, etc. Chaque classe Java aura son équivalent en Flash avec un .AS et un .FLA.

Tu vois mieux ? des idées ?

JC
0
cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
31 mai 2007 à 01:36
Je vois mieux oui.
Des idées aucunes.

Je ne comprend malheuresement pas "trop" l'intéret de ceci...:S

Je te souhaite sur ce un bon courage :)

bali_balo....=]
0
jcsydney Messages postés 22 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 24 novembre 2009
31 mai 2007 à 09:09
L'intérêt est le suivant: je dois montrer qu'on peut faire la même chose en Java et en Flash AS2. Dans un cadre particulier, j'utilise une méthode de conception basée sur des Design Patterns (Abstract Factory, Proxy, etc.), et cette méthode de conception sépare l'application en 3 gros morceaux. L'un des trois est la partie présentation, et un autre est le noyau fonctionnel (c'est-à-dire les services offerts par l'application, mais sans tenir compte de l'IHM). Chaque objet présent dans le noyau fonctionnel (par exemple voiture et homme) doit avoir un correspondant dans la présentation (donc les clips ici, avec leurs comportements). Et dans la méthode, on doit faire des new Presentation(....), donc new Presentation_Voiture (...) etc.

Est-ce que ça te donne des idées de solutions, soit pour faire directement ce que je veux, soit pour contourner le problème tout en restant "propre" dans la conception ?
JC
0
phpemilie Messages postés 6 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 15 janvier 2008
31 mai 2007 à 11:06
Bonjour,

Comme tu le soulignais dans mon post hier, nous avons un peu le même problème.
Pour ma part, il est résolu.
J'ai posté ce qui m'apparaît comme la solution dans le sujet que j'avais créé : "[infomsg_ATTACHER-MOVIECLIP-CHACUN-OBJETS-CLASSE_952801.aspx#6 attacher un movieclip à chacun des objets de ma classe]"

En espérant que ça te soit utile,

Bon courage,

Emilie
0