[FLASH 8] questions de débutant
Bonjour,
Voilà je suis nouveau dans le monde de FLASH et l’apprentissage de l’action script
me pose quelques petits problèmes diverses.
ORGANISATION : Voilà je suis habitué a utiliser des langage tel que PHP PERL et d’autres. Je suis donc habitué a travailler avec un nombre de fichiers restreint. L’un
pour le code principal un autre pour les class etc.
dans FLASH on met un peux code dans l’image 0 du scénario principal puis dans un
clip puis dans un bouton etc. On obtient donc un code fragmenté dans divers élément de nature différentes éparpillés dans le projet.
Ma question est donc :
Peut on coder l’entièreté de son application dans l’image 0 seulement ?
Un problème que j’ai rencontré en tentant de tout mettre dans l’image 0 est celui-ci.
Pour générer un événement à partir d’un clic sur un bouton on écrit ceci :
this.XXX_btn.onRelease = ma_fct(arg);
Ceci permet de ne pas coder dans le clip du bouton, mais si ma fonction renvoie une
valeur je n’ai aucune idée de la manière de la récupérer. J’ai essayé différentes méthode comme celle-ci :
this.XXX_btn.onRelease{ var=ma_fct(arg);} mais sans résultat.
Est il possible d’appeler une fonction en cliquant sur un bouton et de récupérer la valeur de retour ?
Une autre question m’est apparue en lisant le tutorial, on utilise parfois le this.XX pour désigner un élément (bouton,clip..) et parfois pas. Je ne comprends pas bien la différence générée par la présence ou non de ce this.
COMPORTEMENT GENERAL : Le tutorial impose souvent l’utilisation du stop() pour empêcher la tête de lecture de repasser sans cesse sur l’image 0 contenant les instructions. Pourtant j’ai écris un tout petit script qui incrémente une valeur (i++) et l’affiche dans un champ texte, mais quand je lance l’application la valeur ne change pas. J’ai l’impression que la tête ne passe qu’une foi sur mon code.
LES OBJETS : J’ai appris a utiliser des objets mais deux points restent sombre.
Doit on obligatoirement déclarer une classe par fichier .as ou peut on tout déclarer dans un seule fichier ?
Il existe des constructeurs d’objet mais existe t’il des destructeurs ?
Si oui quel est sa syntaxe ?
Merci d’avance pour vos réponses.
Re: questions de débutant
Bonjour,
pour ce qui est des classes, c'est une seule par fichier externe.
Pour ta question de metre tout le code dans l'image 1 du senario principal..
je te conseille le livre FlashMX2004 actionScript training from the source
livre officiel Macromedia press.
il te faut voir ton developement comme des briques legos que tu essemble.
je decompose mon appli en plusieurs parties.
Une movie de base qui va contenir les variables principales et qui va repartir les telechargeement.
je met dans le frame 1 les principales fonction generale.
le formulaire par exemple, sera un movie externe qui pourait etre charger au besoin, avec son code a lui, place dans son image 1
mais dans ce mouvie pratiquement tout le code ( bouton, etc..) sera regroupe dans son image 1.
dans le cas de bouton utilise les ecouteur:
puch_btn.addEEventListener("clik", clearForm);
alors oui il faut regroupe le code mais aussi savoir le dissocier, generalement au niveau de Movie.
Bonne lecture
@+
Tops
Re: questions de débutant
Salut,
Ca fait pas mal de questions, et désolé si je parais pédant mais je ne trouve pas les explications très justes jusque là. Je vais essayer de faire mieux :)
Peut on coder l’entièreté de son application dans l’image 0 seulement ?
Oui, c'est possible, si le projet est assez simple. En pratique, ça n'arrive quasiment jamais, pour plusieurs raisons, notamment le fait que tu ne peux pas déclarer de gestionnaires d'événements sur des objets qui n'existent pas encore. Autrement dit, si tu as un bouton qui n'apparaît qu'à l'image 10, tu ne pourras pas dire à Flash ce que tu veux qu'il fasse avant l'image 10. Donc regrouper son code (le chargement des données, les fonctions et les variables d'environnement en fait) sur la première image, oui, imaginer qu'on puisse absolument tout mettre sur une image, c'est difficile.
Pour générer un événement à partir d’un clic sur un bouton on écrit ceci :
this.XXX_btn.onRelease = ma_fct(arg);
Ca déjà c'est pas très juste. Ca marche probablement, mais la synthaxe correcte serait:
Code:
this.XXX_btn.onRelease = ma_fct;
ou
Code:
1 2 3
| this.XXX_btn.onRelease = function () {
ma_fct(arg);
} ; |
Est il possible d’appeler une fonction en cliquant sur un bouton et de récupérer la valeur de retour ?
Là j'ai envie de te dire que si tu fais bien ton boulot de codeur, tu ne dois pas avoir ce problème là. En tout cas je ne vois pas pourquoi tu aurais besoin de retourner une valeur dans la fonction que tu utilises pour un onRelease. Tu peux développer?
>> Une autre question m’est apparue en lisant le tutorial, on utilise parfois le this.XX pour désigner un élément (bouton,clip..) et parfois pas. Je ne comprends pas bien la différence générée par la présence ou non de ce this.
this permet de cibler tes variables, de la même manière que dans pas mal de langages. En gros, ça permet de dire à Flash que tu cherches ta variable dans un scope bien précis, en l'occurrence le scope courant. Donc on peut se permettre de l'omettre quand le scope par défaut est le scope courant. Notamment si tu écris dans une timeline:
Code:
1 2 3
| this.toto = 5 ;
trace (toto) ; // renvoie 5
trace (this.toto) ; // renvoie 5 |
COMPORTEMENT GENERAL : Le tutorial impose souvent l’utilisation du stop() pour empêcher la tête de lecture de repasser sans cesse sur l’image 0 contenant les instructions. Pourtant j’ai écris un tout petit script qui incrémente une valeur (i++) et l’affiche dans un champ texte, mais quand je lance l’application la valeur ne change pas. J’ai l’impression que la tête ne passe qu’une foi sur mon code.
Uniquement si ton animation ne comporte qu'une image, je crois. A vérifier.
LES OBJETS : J’ai appris a utiliser des objets mais deux points restent sombre.
Doit on obligatoirement déclarer une classe par fichier .as ou peut on tout déclarer dans un seule fichier ?
Il existe des constructeurs d’objet mais existe t’il des destructeurs ?
Si oui quel est sa syntaxe ?
Première question, je pense que ça dépend de ta version de Flash, et 2ème question, non, ou alors peut-être maintenant avec les dernières évolutions, je suis pas trop au courant :)