Mes débuts avec les objets et prototypes et setInterval - Flash/ActionScript - Programmation
Marsh Posté le 27-06-2006 à 22:16:14
euh...les prototypes et les setInterval, c'est juste du domaine de la syntaxe. Avant d'apprendre la syntaxe (ce qui est censé être rapide, bête et méchant, au passage), il faut apprendre la grammaire.
là, c'est un peu comme si tu te lançais dans la construction d'une maison avec des connaissances de maçon : ça va pas tenir debout, mais les joints sont propres. On s'en fout que les joints soient propres.
Ce n'est pas de "l'algorithmie", c'est de "l'architecture logicielle", qui est encore une autre discipline. Là faudrait que tu pécho un bouquin d'architecture logicielle et que tu potasses (ah oui, au fait, on apprend à coder dans les livres, pas dans les tutos - les tutos c'est juste pour la syntaxe, c'est très accessoire).
Habituellement, on apprend les notions de bases de l'architecture logicielle orienté objet via le langage Java. On considère classiquement "Design Pattern:Head First", "Object-Oriented Software Engineering w/ UML, Patterns and Java" comme des bonnes références. Pour Flash spécifiquement, le Moock, à savoir "Essential Actionscript 2.0" de Colin Moock chez O'Reilly.
tu n'y couperas pas.
Marsh Posté le 27-06-2006 à 22:32:22
Mmmmh en plus, même si tu as bien compris le "comment" des prototypes, tu n'as peut-être pas bien compris le "pourquoi" ...
Ici, à partir de maintenant, le moindre movieclip que tu vas créer va automatiquement posséder les fonctions afficheItem, deleteItem, .. etc
Je ne vois pas trop l'intérêt ...
Un prototype sert à ajouter des fonctionnalités à toute une classe ...
cf ici , l'exemple du "invert" de raytaller ...
Maintenant, tu fais ce que tu veux hein
Marsh Posté le 27-06-2006 à 23:08:44
alors peut etre que si j'utilise des simples "fonctions" cela peut suffir ?
ou alors une classe ? (mais là je sais pas faire non plus pour l'instant)
Marsh Posté le 28-06-2006 à 00:27:23
prototypes = forme d'implémentation de la programmation orienté objet sous Actionscript v1 (jusque Flash MX). C'est la même implémentation utilisée dans Javascript (ECMA-262).
classes = forme d'implementation de la programmation orienté objet sous Actionscript v2 (à partir de Flash MX 2004). C'est la même implémentation décrite dans la norme ECMAscript 4 (l'hypothétique Javascript 2). Proche de Java plus que du C++ : héritage multiple implémenté par les interfaces, utilisation d'un modéle de délégation d'évenements, par exemple.
On préférera les classes aux prototypes, cela va de soit. Les protos sont intéressants si tu fais de la maintenance sur des projets existants, pour développer 'from scratch' ça n'a aucun sens.
Ici, tu as un objet aux limites définies (une encapsulation évidente) qui est ton menu. Tu auras donc au moins une classe de menu - qui peut éventuellement contenir une classe MenuItem, suivant la complexité des roll-overs et actions associées aux items de ce menu.
Moins évident, tu dois aussi créer une classe MenuData, qui se chargera uniquement de pomper le XML, et de le traduire sous une forme plus simple que l'objet XML que tu reçois actuellement, qui a une syntaxe assez lourde (firstChild.childNodes[foo].etc...). Ta classe MenuData s'appelle un 'parser XML'. Idéalement elle hériterait de la classe XML standard par composition, elle renverrait un tableau d'Object, éventuellement assez profond, mais forcément plus facile à manipuler. Elle peut aussi gérer, en plus de la lecture, l'opération inverse qui est l'écriture de fichiers XML (pour quand tu développeras des back-offices...). Tu dois aussi gérer en interne à cette classe le parcours de données, en lui ajoutant des méthodes plus pratiques telles que getCategories():Array ou getItemsByCategories(pCategory:String):Array, qui allégeraient un peu ton code.
Et apprends les aspects théoriques du développement et de l'architecture logicielle, parce que là tu vas stagner à faire du code procédural pouilleux inexploitable en production (du script et des fonctions quoi...sur ce dev-là tu vois que tu touches déjà les limites de ce qu'on peut faire en procédural).
Marsh Posté le 28-06-2006 à 01:13:35
donc si je comprends bien.. il faut décortiquer chaque fonction du programme.. et en faire des classes bien définies... et ensuite mon objet fera appel à ces différentes classes pour en sortir un resultat ?
(xcusez moi d'etre relou... mais j'ai tres tres envie de faire les choses bien.. et je sais que maintenant mon objectif c'est de faire de la POO pour faire les choses bien ! et pour combler une bonne partie de mes lacunes.. je sais que j'en suis capable.. mais c'est une façon de penser completement différente de ce que j'ai pu faire jusqu'à present)
Marsh Posté le 28-06-2006 à 10:40:28
Et ben voilà, tout est dit !
freed102 a écrit : donc si je comprends bien.. il faut décortiquer chaque fonction du programme.. et en faire des classes bien définies... et ensuite mon objet fera appel à ces différentes classes pour en sortir un resultat ? |
Heuuuu non ..
Ton objet EST ta classe qui contient des fonctions/fonctionnalités propres ...
Marsh Posté le 28-06-2006 à 14:18:50
craps_youpla a écrit : prototypes = forme d'implémentation de la programmation orienté objet sous Actionscript v1 (jusque Flash MX). C'est la même implémentation utilisée dans Javascript (ECMA-262). |
Je commence à capter un peu l'idée... maintenant ce que j'arrive pas trop à capter.. c comment on assemble tout ça pour que ça agisse par exemple sur un seul element de ma page, là je vais créer plein de classes... mais apres ? dans chaque classe je fais appel aux autres classes ? par exemple dans la classe "menu" je vais appeler la classe "loadXML" puis la classe "menuItem" etc etc ?
... deja est-ce que je suis sur la bonne voie :
Code :
|
Marsh Posté le 28-06-2006 à 14:53:52
ya t il un moyen de ne pas mettre les .as dans le dossier macromedia/flash 8.0 .. blablabla ? si je veux le mettre dans mon dossier de travail je peux ?
Marsh Posté le 28-06-2006 à 15:21:13
donc voila... j'ai fait ça :
ma classe :
Code :
|
et dans flash j'ai fait ça :
Code :
|
mais il me retourne :
XMLMenu :undefined
et si je fais :
trace("XMLMenu :" +XMLMenu.filename);
il me retourne :
XMLMenu :menu.xml
... donc là ya un truc qui m'echappe
Marsh Posté le 28-06-2006 à 15:45:20
Bon déjà si tu veux faire du "bon" AS2, faut apprendre à typer tes variables :
var XMLMenu:menuData = new menuData("menu.xml" );
Marsh Posté le 28-06-2006 à 15:49:11
ok pour ça mais je n'arrive pas à pointer mes firstchild, childnodes etc etc ! il me dit tout le temps :
Il n'existe aucune propriété nommée 'firstChild'.
Code :
|
si je fais trace(this) il me retourne tout le contenu du XML;
mais apres j'en fais quoi ?
Marsh Posté le 28-06-2006 à 18:35:52
oulala ! la nage totale ! j'ai essayé de me pencher sur les static, private, public... et bah j'arrive à rien du tout ! lol !
Code :
|
je sais même pas si mes fonctions sont executées (les trace ne répondent pas... c peut etre normal ? )
Marsh Posté le 28-06-2006 à 19:44:59
lol, c'est exactement ce que j'écrivais dès mon premier post. La syntaxe c'est trivial - tu as parfaitement réussi à coder rapidement quelques classes (qui buggent un chouia, certes, mais t'as tracé).
et comme j'écrivais dans mon premier post, c'est totalement inutile ce que tu as codé aujourd'hui, vu que tu maîtrises pas les concepts sous-jacents à tout ça.
en l'occurrence tu dois faire appel à ton code d'exécution ("passer une méthode en référence", ça s'appelle aussi un callback) depuis ta méthode extractData, sinon ton XML est pas encore chargé alors que tu essaies déjà de le lire.
Citation : donc si je comprends bien.. il faut décortiquer chaque fonction du programme.. et en faire des classes bien définies... |
Oui, et la méthode de décorticage s'appelle "UML" (ou simplement "improviser à l'arrache", selon les projets). En Flash, les projets sont plus petits, donc on modélise rarement, on se contente juste d'utiliser des structures-types d'interactions entre objet qui reviennent souvent qque soit le langage. On appelle ça des "design-pattern". Par exemple, là tu utilises le design-pattern du DataObject, un objet qui sert à encapsuler des données (MenuData).
...et si tu te sors pas les doigts du cul à acheter un bouquin et à apprendre à vraiment développer, tu arriveras à rien...en plus c'est une honte, t'assimiles à toute vitesse, je comprends pas pourquoi tu te fais pas ton petit apprentissage rapide de la POO avec Java en solo, t'en as pas pour longtemps.
Marsh Posté le 28-06-2006 à 19:53:52
y'a 'thinking in patterns' gratos sur le site de l'auteur, il est pas fini mais c'est un bon bouquin, en plus y'a des patterns assez exotiques, je l'utilise réguilèrement en production sur de l'AS2, le code est en Java - mais le code c'est trivial : http://www.mindviewinc.com/
Marsh Posté le 28-06-2006 à 20:27:15
merci pour tous tes conseils ! je suis en train de regarder ton "thinking in patterns" but... it is all in anglishe !!!! lol ! je vais avoir les cheveux qui poussent à l'intérieur tres vite ! lol ! surtout que mon imprimante est HS ! je vais demander à ma reum de me l'imprimer demain!
Marsh Posté le 28-06-2006 à 21:26:49
en fait en regardant les "design patterns" ça me fait beaucoup penser aux "ordinogrammes" qu'on m'a appris à faire en PHP... c la même idée.. c dessiner toute l'architecture du programme avant de le mettre en oeuvre... (c dans le même esprit que la modelisation de merise aussi)
Marsh Posté le 17-02-2009 à 15:06:18
Je reprend le fil de la discussion, j'espère que fred est encore là, ceux sont les mêmes questions, à peu près. Seulement moi, c'est graphique! et là!... j'ai des classes,un pack même,mais je sais pas comment les tester. par exemple les lib pix , c'est des classes certes mais pour les voir, comment fait on?!
un script as, ce lis ce décortique? s'appel? quoi?
aidez moi
je suis au pied du mur avec bloc et toutoutoutout
Marsh Posté le 23-02-2009 à 04:06:13
Fais un nouveau topic ...
Marsh Posté le 27-06-2006 à 15:28:27
Bonjour à tous !
Voila j'ai decidé de passer au niveau supérieur, et utiliser donc les prototypes... j'ai à peu pres capté comment ça marche.. mais c pas encore ça !
deja j'aimerai votre avis sur ma sémantique, j'aimerai que tous mes objets apparaissent les uns apres les autres.. (et pas tous en même temps !) pour cela j'ai décidé d'utiliser setInterval... jusque là ça fonctionne tres bien...
j'arrive donc à afficher mon premier niveau de menu XML... par contre le deuxieme niveau.. ça bug... et j'arrive pas trop à savoir pourquoi.. je me dis qu'il y a un truc qui cloche des le premier niveau.. bref.. je vais vous donner un bout de code... si vous arrivez à comprendre quelquechose.. c cool ! et si vous pouvez m'aider en plus... ça serait encore plus cool !!!!
deja voici le resultat de mon programme :
http://www.freedfromparis.com/flash_version/
et voici le bout de code (ne riez pas !!!)
bref... c pour l'instant un peu le gros bordel ! mais justement j'aimerai savoir comment proceder pour pas que ce soit le bordel ! quitte à tout refaire ! mais j'aimerai vos techniques et vos conseils !.. j'ai lu plein de tutos sur la POO avec flash et les prototypes (media-box) mais ya encore plein de trucs qui m'echappent.. surtout au niveau de l'algorithmie.
Merci d'avance
Freed