begin process at 2008 07 21 00:22:54
1 213 530 membres
431 nouveaux aujourd'hui
14 167 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : comment séparer une IHM et l'instancier après ? [ Scripts / ActionScript ] (jcsydney)

comment séparer une IHM et l'instancier après ? le 29/05/2007 23:22:51

jcsydney

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.


Re : comment séparer une IHM et l'instancier après ? le 30/05/2007 13:56:14

bali_balo
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....=]


Re : comment séparer une IHM et l'instancier après ? le 30/05/2007 13:57:56

bali_balo
des bibliothèqueS partégéeS

grrrrrrrrrr

Re : comment séparer une IHM et l'instancier après ? le 30/05/2007 21:57:05

jcsydney
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

Re : comment séparer une IHM et l'instancier après ? le 30/05/2007 22:20:44

bali_balo
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....=]




Re : comment séparer une IHM et l'instancier après ? le 30/05/2007 22:59:53

jcsydney
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

Re : comment séparer une IHM et l'instancier après ? le 31/05/2007 01:36:24

bali_balo
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....=]

Re : comment séparer une IHM et l'instancier après ? le 31/05/2007 09:09:13

jcsydney
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

Re : comment séparer une IHM et l'instancier après ? le 31/05/2007 11:06:10

phpemilie
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éé : "attacher un movieclip à chacun des objets de ma classe"

En espérant que ça te soit utile,

Bon courage,

Emilie


Classé sous : fichier, fla, clip, voiture, homme

Participer à cet échange

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS