Soucis réalisation portfolio en AS3 : plusieurs MouseEvent - Flash/ActionScript - Programmation
Marsh Posté le 11-11-2008 à 19:08:25
Normal, un copier collé duplique tes fonctions, et la ton compileur ne comprend plus rien ("bordel, j'ai 3 fonctions go" )
Donc, renomme tes fonctions...
Code :
|
PS, qq1 sait comment ne faire qu'une fonction (avec pour argument la frame à viser), car je n'arrive pas à le faire au sein d'un Listener...
Marsh Posté le 11-11-2008 à 22:38:54
Excellent, ça marche, merci beaucoup.
En plus c'est plus clair.
Marsh Posté le 12-11-2008 à 03:49:25
Si jamais quelqu'un passe à nouveau ici, j'ai un autre soucis.
J'aimerais charger une image lorsque je clique sur un bouton (bt1 on charge l'image 1, bt2 charge l'image 2, etc).
J'ai trouvé ce code :
Code :
|
Mais l'image s'affiche dès le début et non au clic sur le bouton.
A nouveau ça doit être un truc tout con, mais je trouve pas
Marsh Posté le 12-11-2008 à 08:23:58
et bien, normal, tu as mis le load() en dehors du listener... Par ailleurs, même en effaçant le load() d'en haut, dis toi bien qu'à chaque fois que tu cliqueras, il superposera la nouvelle image... tu aura visuellement ce que tu souhaite, mais ça peut faire lourd si tu ne suppr pas petit à petit...
Autre chose, encore une fois, j'aimerais qu'un doué passe par ici pour nous apprendre à mettre un argument dans la fonction appelé par le listener, ça nous eviterai de faire une fonction par bouton alors qu'un seul indice change...
EDIT : Corrigé
Marsh Posté le 12-11-2008 à 08:26:02
Je pense que le problème le plus urgent à resoudre n'est pas d'apprendre une syntaxe, mais bien une logique de programmation, lister ce dont tu as besoin...
Bref, le même souci que moi
Marsh Posté le 12-11-2008 à 14:14:08
abais a écrit : et bien, normal, tu as mis le load() (et le addchild) en dehors du listener... |
Hmmm ok.
Je vois à peu près, mais bon, de là à le réaliser...
abais a écrit : Je pense que le problème le plus urgent à resoudre n'est pas d'apprendre une syntaxe, mais bien une logique de programmation, lister ce dont tu as besoin... |
C'est vrai en fait, faudrait que je réapprenne en profondeur, ça fait des mois que j'ai appris ça et j'ai plus pratiqué donc j'ai tout oublié... surtout que j'avais appris en AS2 donc c'est un peu déroutant.
Mais le truc c'est que j'ai juste ce portfolio simpliste à faire, donc je sais pas si ça vaut le coup.
Mais au vu de ton site, tu as l'air de bien te débrouiller quand même je trouve.
Marsh Posté le 12-11-2008 à 16:07:56
H@wk a écrit : Mais au vu de ton site, tu as l'air de bien te débrouiller quand même je trouve. |
Héhé, merci, mais mon portfolio est très sommaire et réalisé en AS2, comme quoi on peut faire bien avec peu ^^
En AS3, ça change la donne, je repars à 0, difficile quand on a jamais eu de formation en programmation...
Je vais justement refaire mon site, mais j'attends la sortie officiel de flash player 10 vu que j'utilise l'axe z...
Marsh Posté le 12-11-2008 à 17:11:33
Oublie l'absurdité que je t'ai dis plus haut, le fait d'exécuter load() plusieurs fois ne provoquera aucune superposition...
Code :
|
Marsh Posté le 13-11-2008 à 06:28:15
Merci
J'ai adapté le code à mon anim, ça marche
Maintenant, 2/3 problèmes que je n'arrive pas à résoudre :
- comment choisir l'emplacement où s'affichera l'image ? (elles s'affichent en-haut à gauche de l'écran).
- comment faire pour que l'image s'enlève (unload ?) quand je passe à une autre rubrique de mon portfolio ?
Jviens de me rendre compte que j'ai un peu de mal à savoir où placer mon code, mais bon, pour le moment ça marche comme je veux, donc ça va.
Marsh Posté le 13-11-2008 à 10:13:24
H@wk a écrit : comment choisir l'emplacement où s'affichera l'image ? (elles s'affichent en-haut à gauche de l'écran) |
Simple, tu defini la position de chargeur, vu que c'est lui qui "contient" l'image...
Code :
|
Ou placer le code ? dans le sens logique de lecture (par exemple, la position doit etre défini après ta commande qui crée chargeur, logique...)
Ah oui, rien ne t'empeche de changer la position de tes images (ou leur taille) dans les fonctions du listener...
Je te conseil sincèrement de reprendre tout à zero, car j'ai l'impression que tu copie du code trouvé sur les sites sans comprendre ce qu'il signifient.
Concernant le "unload", je sais pas, mais tu peux toujours cacher chargeur avec "chargeur.visible = false;" (en remettant true si tu reviens dans ta galerie)...
Marsh Posté le 13-11-2008 à 18:20:19
abais a écrit :
|
Merci.
Je devrais cependant les afficher en tenant compte du compte supérieur droit, et non gauche.
Ca doit être tout bête, mais c'est le genre de truc que je trouve pas en faisant des recherches sur le net.
Déja la plupart des tutos sont pour AS2 et ensuite ils sont beaucoup trop avancés, alors que je cherche souvent des infos basiques
Citation : Ou placer le code ? dans le sens logique de lecture (par exemple, la position doit etre défini après ta commande qui crée chargeur, logique...) |
C'est vrai. Le truc c'est que j'ai des idées, mais j'arrive pas à savoir quoi utiliser pour les réaliser.
Citation : Concernant le "unload", je sais pas, mais tu peux toujours cacher chargeur avec "chargeur.visible = false;" (en remettant true si tu reviens dans ta galerie)... |
Nickel, ça marche.
Marsh Posté le 13-11-2008 à 19:32:52
je vois pas l'interet de placer par rapport au coin de droite...
Si les images sont toujours de la meme taille, alors il suffit d'une soustraction...
position x = largeur de la scene - largeur de l'image, logique non ?
Si l'image n'a pas toujours la meme taille, il faut l'integrer la position au fonction...
Marsh Posté le 13-11-2008 à 20:51:47
Je veux la placer par rapport au coin de droite tout simplement car ça colle avec mon interface.
De plus, les images sont de tailles différentes.
Voila une image pour mieux comprendre :
http://img258.imageshack.us/img258 [...] liopf0.jpg
En bas les 3 catégories, là je viens de cliquer sur "design" par exemple, et donc les 3 carrés s'affichent.
Quand je clique sur un carré, une image s'affiche dans le coin supérieur droit.
Je vais continuer à chercher, ainsi qu'un loader histoire que les visiteurs savent ce qu'il va se passer.
edit : bon, en fait c'est pas si grave, de toute façon je vais devoir redimensionner les images (screenshots, photos) donc ça posera pas trop de problème.
Marsh Posté le 17-11-2008 à 23:12:31
Tu es encore là abais ?
Pour en revenir à ce code :
Code :
|
J'aimerais pouvoir l'appliquer à d'autres boutons situés plus loin sur la timeline en utilisant les mêmes fonctions et le même loader.
Évidemment impossible, sauf si je renomme les fonctions et variables (en admettant que j'ai une trentaine de boutons, ça va être fastidieux).
Ce lien traite du problème, mais je n'arrive pas à l'adapter à mon cas :
http://www.flashkod.com/forum/suje [...] 25174.aspx
T'aurais une idée ?
Marsh Posté le 18-11-2008 à 09:51:44
Oui j'ai une idée, comme je le disais bcp plus haut, je n'arrive pas à faire passer un argument dans la déclaration d'une fonction qu'on appel dans un listener... Je vais voir ton lien
Marsh Posté le 18-11-2008 à 18:44:26
Effectivement, jm'en souvenais plus.
Si jamais tu trouves préviens-moi
Marsh Posté le 20-11-2008 à 05:13:55
Bon a vu de pif et excusez moi d'avance parce que ca fait longtemps que j'ai pas fait d'AS3, je dirais qu'il faut faire comme ca en methode sale.
Code :
|
Ca c'est l'adaptation de votre code.
La boucle attribue a tout tes boutons la meme action.
Et dans la function de callBack (go) tu fouilles dans le parametre (qui est un Event) pour trouver le nom du clip cliqué.
Tu fais un switch dessus pour que en fonction du nom tu appliques une certaine action.
Alternative : Pour te simplifier le cul, tu peux donner a tes images le nom des boutons (ou l'inverse). Ca t'evites le Switch().
Exemple: img1.jpg
img1.addEventListener(MouseEvent.CLICK, go);
dans ta fonction
adresse= new URLRequest(e.target.name+".jpg" );
Mais bon, la methode propre reste de faire une classe qui étends MovieClip et de faire des occurences de celle-ci qui contiennent ton bouton, plus les infos necessaires (le nom de l'image associé par exemple).
Marsh Posté le 20-11-2008 à 10:22:27
Je vois ou tu veux en venir Zed, mais en dehors de cette exemple, on ne peut pas mettre une fonction avec argument, par exemple :
Code :
|
Ce code ne fonctionnera pas, mais j'aimerai comprendre pourquoi
(je sais très bien qu'on pourrait ici déclarer la fonction dans la boucle, mais ce que je veux savoir faire, c'est d'appeler une fonction avec argument dans un Listener... je sais pas si je me fais comprendre...
Marsh Posté le 20-11-2008 à 10:42:30
Oui mais non, faut pas proceder comme ca ... me demande pas pourquoi, mais je suis sur que quelqu'un chez Adobe doit savoir
Marsh Posté le 20-11-2008 à 21:22:41
Merci zedlefou, ta technique a bien marché
Par contre, j'ai un soucis : de la frame 10 à 49, j'ai donc ce code qui affiche des images :
Code :
|
De la frame 50 à 89, j'ai ce code qui affiche des photos :
Code :
|
Ca marche, mais le soucis c'est que ça n'affiche que jusqu'à la photo 3, les photos 4/5/6 ne s'affichent pas ?!
Si je relie la photo 6 (par exemple) au bouton 1 elle s'affiche, le soucis viendrait donc des boutons 4/5/6.
Pourtant, j'ai bien vérifié, il n'y a pas d'erreur d'orthographe sur les boutons ou autre, donc je comprend pas trop. Flash ne me signal pas d'erreur non plus
Marsh Posté le 21-11-2008 à 07:20:27
Pourquoi ta boucle et de 9 fois et non 3 et 6 (donc i<4 et i<7) ?
Marsh Posté le 21-11-2008 à 07:57:02
C'est mieux d'avoir tout ton code au meme endroit, essaie de revoir l'architecture de ton anim pour coller a ca.
Sinon, c'est la mort ...
Marsh Posté le 21-11-2008 à 14:52:38
abais a écrit : Pourquoi ta boucle et de 9 fois et non 3 et 6 (donc i<4 et i<7) ? |
J'ai mis 10 pour avoir de la marge (sans raisons particulières en fait). J'ai essayé avec 4 et 7, ça ne marche toujours pas.
Zedlefou a écrit : C'est mieux d'avoir tout ton code au meme endroit, essaie de revoir l'architecture de ton anim pour coller a ca. |
C'est ce que j'avais essayé de faire en commençant bien sûr, tout mettre sur le calque as (comme on me l'avait appris) mais c'est impossible ?!
J'ai donc du code sur un calque avec les boutons, à divers endroits, ainsi que sur d'autres calques, sinon ça ne marchait pas
Marsh Posté le 21-11-2008 à 15:12:30
mets ta scene sur un FTP si ça te dérange pas...
Marsh Posté le 21-11-2008 à 18:26:50
abais a écrit : mets ta scene sur un FTP si ça te dérange pas... |
Je t'ai uploadé ça et transmis par mp.
Ne fait pas attention au contenu ou autre
Si jamais tu vois pas trop comment ça fonctionne, n'hésite pas à me demander, mais tu vas comprendre sans soucis (clic sur bouton d'une rubrique, apparition des carrés qui représentent chacun une image, etc)
Marsh Posté le 21-11-2008 à 19:53:08
Mais c'est un bordel monstre ! recommence moi ça !!!
Ne me dis pas que t'as pas le temps !
Je t'interdis de faire 50 image clé différente pour mettre le script, encore moins de mettre le script dans une image clé qui contient des élément graphique !
Si tu veux réussir et comprendre, c'est la seul solution, organise toi...
Question HS :
C'est volontaire que tes boutons soient désordonnés ?
Sinon, oublis le .docx, tt le monde n'as pas office (encore moins le 2007)
EDIT : J'ai corrigé ce massacre
Marsh Posté le 21-11-2008 à 20:01:51
abais a écrit : Mais c'est un bordel monstre ! recommence moi ça !!! |
Je m'en doutais que pour un habitué ça allait être un bordel monstre
C'est quoi le scp ?
Citation : Question HS : |
Les carrés tu veux dire ? qu'ils soient pas alignés ? oui c'est voulu.
Citation : Sinon, oublis le .docx, tt le monde n'as pas office (encore moins le 2007) |
C'est déjà fais, j'y ai pensé par après que ça servait à rien.
Marsh Posté le 21-11-2008 à 20:02:18
Si le Full-Script n'est pas ton fort, rien ne t'empeche d'enfermer des élément dans des clip, eux même enfermés dans des clips, etc...
"scp" c'est "script" quand je tappe trop vite
Et pour qq1 d'habitué tu te trompe, je fais pas du flash depuis longtemps, d'autant plus que je suis graphiste à la base, donc le code c'est pas mon fort !
Sinon, je n'arrive pas à comprendre l'erreur actuelle, elle ne vien pas de la boucle en soit, mais du
Code :
|
ça fait comme si les bouton "photo4" (et+) n'existait pas, et pourtant ils sont là, nom d'occurence valide...
Marsh Posté le 21-11-2008 à 20:04:10
Message intégré Ci-dessus
Marsh Posté le 21-11-2008 à 21:11:34
MDR, j'ai compris !
Gros vilain, le bouton "photo1" n'est plus là à la frame 55, il est remplacé par "photo4" en nom d'occurence, ça fout la merde
(c'est d'ailleurs pour ça que ça merdait au moment ou la boucle "s'occupait" de photo4 alors que ça marchait jusqu'au 3)
D'ailleurs, je vois pas vraiment pourquoi il faisait l'erreur à la frame 56...
Marsh Posté le 21-11-2008 à 22:06:22
Wahh ! bien joué, ça m'avait échappé...
Marsh Posté le 22-11-2008 à 17:05:05
(ça ne 'empêche pas de recommencer et de mettre ça au propre, allez zou !)
Marsh Posté le 24-11-2008 à 12:30:23
Je suis maintenant entrain de regarder pour afficher une légende à chacune de mes images chargées (par exemple une description ou autre, 2/3 lignes pas plus).
Il faudra donc que le texte s'affiche uniquement avec l'image concernée, après avoir cliqué sur le bouton appelant l'image.
Le texte n'est pas toujours placé aux même coordonnées (images plus ou moins grande, photo verticale, etc).
J'ai repéré ça, j'ai essayé mais je n'emmêle un peu :
http://www.bases-as3.fr/index.php/ [...] -dynamique
C'est possible de faire un truc assez simple, en partant du code plus haut que zedlefou m'a donné, et integrer une fonction affichant du texte ?
Ou sinon, est-ce faisable avec l'outil texte dynamique ? je sais pas ce qui est le mieux
Marsh Posté le 24-11-2008 à 13:34:11
créé le champ de texte à la suite de chargeur....
Ensuite, change son contenu texte ainsi que sa position dans la fonction go... (genre, si le texte est en desous : montexte.y=chargeur.height...)
C'est dommage de ne pas passer par le XML, ça t'economiserais des lignes...
Marsh Posté le 24-11-2008 à 15:30:39
abais a écrit : créé le champ de texte à la suite de chargeur.... |
Je viens de faire un essai, le texte s'affiche bien, et change selon la photo.
Bon, évidemment, mon code doit être bancal mais ça marche sans erreurs pour le moment :
Code :
|
Maintenant faut que je change la police.
Citation : C'est dommage de ne pas passer par le XML, ça t'economiserais des lignes... |
Ouais, jpense bien... J'avais eu un cours dessus y'a quelques temps, mais bon, hmm, on va dire que tout s'est déjà évaporé...
Marsh Posté le 24-11-2008 à 15:55:25
si la position Y ne change pas, pourquoi l'inclure dans le switch ? Pareil pour la ligne "zoneTexte.text = contenu;" (ou alors si tu tiens à le laisser dans le switch, autant mettre directement "zoneTexte.text="blabla";"...
la position X ne dépend-elle pas directement de la largeur de l'image ?
Marsh Posté le 24-11-2008 à 16:37:32
abais a écrit : si la position Y ne change pas, pourquoi l'inclure dans le switch ? Pareil pour la ligne "zoneTexte.text = contenu;" (ou alors si tu tiens à le laisser dans le switch, autant mettre directement "zoneTexte.text="blabla";"... |
La position Y changera, c'est juste que là j'ai fais un copié/collé en changeant juste X pour tester.
Sinon effectivement je venais de corriger :
Code :
|
X dépend de la larguer de l'image oui, pourquoi ?
Bon, par contre, ça me fait foirer mes boutons pour changer de "rubrique". Pourtant ils ne sont pas reliés à cette zone texte, enfin, je sais pas, aucune raison que ça me fasse merder les boutons.
Quand je clic sur un carré pour afficher une photo (et donc le texte avec sa description), les rollover des boutons sont décalés
C'est ça qui m'énerve dans Flash, dès que tu fais une chose, une autre chose ne fonctionne plus correctement
Marsh Posté le 24-11-2008 à 16:46:01
Ah, et sinon, comment faire pour que la description de l'image1 :
Code :
|
soit uniquement visible quand on a cliqué sur mon bouton qui affiche l'image1, et invisible tout le reste du temps ?
Tu vois ce que je veux dire abais ?
Marsh Posté le 24-11-2008 à 17:08:24
et bien, tu met sur les autres images clé
Code :
|
ça depend de la situation en faite...
Marsh Posté le 11-11-2008 à 16:59:27
Je suis entrain de réaliser un portfolio, super basique, mais j'ai quelques soucis.
Ayant un niveau faible en AS2, j'ai malgré tout tenté de le faire en AS3 (si déja...)
Le code se situe sur un calque actions comme il se doit.
J'ai 3 bouton, qui sont censé renvoyé chacun à une frame différente.
J'ai donc trouvé qu'il fallait faire de la façon suivante en AS3 :
Voici l'exemple pour le 1er bouton, mais comment faire pour les 2 boutons suivants ?
J'ai tenté de bêtement copier la fonction 3x de suite mais évidemment ça ne marche pas.
merci
---------------
VDS : Objectif Canon EF 16-35mm | Casque Plantronics