Arf ! Contrôle après un loadMovie (oui oui, j'ai déjà cherché ^^) - Flash/ActionScript - Programmation
Marsh Posté le 12-06-2007 à 23:26:40
Bon, c'est bien parce que je suis de bonne humeur ce soir
http://dl.free.fr/XB7S7V8U/Testflash.zip
En espérant que ce soit bien ce que tu cherchais ^^
En fait, là, j'ai mis le listener sur le clip plutôt que sur la scène.
En fait je pense (j'ai pas vu ton code) que tu perds l'occurence de "monclip" une fois le loadMovie appliqué.
Marsh Posté le 13-06-2007 à 09:07:21
Ouaip, ça y ressemble en tout cas ^^
Ok donc chargement de zip.
Test... ça marche, c'est ce que je voulais ! Hourra !!!
Ouverture de source... ah, unexpected file format. Aurais-je oublié de dire que je suis sous flash mx (6.0) ?
Peu importe, je me rends pas facilement. Décompilation des fichiers swf en format 6.0.... ok.
Ouverture des nouveaux fichiers sources (croisons les doigts)... ça marche ! Youhouuuuu !
Lecture du code... ok, un "this.monClip" dans le loadMovie, et le listener en question, ouais, ça fonctionne, apparemment.
Test final : création d'un clip nommé "aze" dans test.fla et rajoute d'un "aze.nextFrame();" dans le listener de monClip dans main.fla......... ouiiiinnn, raté, marcho pô ! (idem avec un export for actionscript du symbole, avec le même nom et tout, snif)
Bon spa grave, les trois quarts marchent, tu as gagné ton auréole Kaalh, merci ^^
Oserais-je abuser encore un petit peu en demandant une solution à ce problème ci ? En suppliant avec une moitié de genou à terre comme un pélerin quelconque au pied d'une photo d'yvette horner ?
Marsh Posté le 13-06-2007 à 09:41:04
tu dois utiliser MovieClipLoader.onLoadInit();
Marsh Posté le 13-06-2007 à 09:54:58
C'est un truc en flash 7, ça, non ? Moi je suis en flash 6 (le maximum, pour mon pauvre win98 ^^)
[edit] après plein de tests divers, effectivement ça n'est pas reconnu par ma version de flash , ou alors je l'écris mal, ce qui est possible aussi... là encore, un exemple qui marche serait plus parlant je pense ^^ [/edit]
Marsh Posté le 13-06-2007 à 10:34:56
non, non, c'est pas reconnu par Flash 6.
Marsh Posté le 13-06-2007 à 11:38:14
skatlan a écrit : je me débrouille pas mal en flash[...] _root.monClip.loadMovie("test.swf" ); |
Citation : Moi je suis en flash 6 |
T'es sur qu'il n'y aurait pas quelques incohérences dans ton discours
Marsh Posté le 13-06-2007 à 12:18:53
zedlefou : désolé, tout le monde ne peut pas se payer une machine de ouf sous windows Xp et une licence flash 7 ou 8 avec
"je me débrouille pas mal", dans le sens où j'arrive à coder ce que je veux sans jamais poser de questions à personne, et ce depuis plusieurs mois, sans bloquer des jours sur des histoires de syntaxe, lol.
Donc oui, je suis très loin d'être un pro, mais parvenir à coder ce que l'on souhaite, quelquesoit le langage de programmation concerné, c'est plutôt déjà pas mal, non ?
Kaalh : oui, j'ai tenté, et malheureusement, non, ça marche pas... Etrange, tout cela, non ?
Donc par contre, tes sources de base fonctionnent avec des this ou des _root rajouté un peu partout comme il faut, donc j'en conclus qu'affecter les frames de la timeline principale de l'animation chargée, ça ça pose plus de soucis, c'est affecter les sous-clips qui ne marche pas.
Bon, ma solution personnelle, je l'ai déjà, ça serait de coder des frames sur la timeline principale, isolées des autres, qui contiennent les codes que je voulais déclencher dans mes sous-clips.
Du type au lieu de tenter un "_root.aze.nextFrame();", je tente un "_root.gotoAndStop(100);", et dans la frame 100 de l'anim externe je rajoute simplement le code "aze.nextFrame();", mais avouez que c'est très bourrin, et que ça explique pas du tout le problème de base ^^
Bref, là encore, ne perdez pas de temps pour me répondre, faites moi juste, si vous le voulez bien, des sources et swf qui font ça, et moi je les passerais dans mon décompileur pour les traduire automatiquement en flash 6, ça vous épargnera la tâche fastidieuse de tenter de me répondre, alors que si ça se trouve j'explique même pas comme il faut mon soucis
Marsh Posté le 13-06-2007 à 12:50:34
skatlan a écrit : zedlefou : désolé, tout le monde ne peut pas se payer une machine de ouf sous windows Xp et une licence flash 7 ou 8 avec |
On est au 9 mais c'est pas grave
Citation : Bref, là encore, ne perdez pas de temps pour me répondre, faites moi juste, si vous le voulez bien, des sources et swf qui font ça, et moi je les passerais dans mon décompileur pour les traduire automatiquement en flash 6, |
Et si toi tu nous montrais tes sources, ça serait plus simple quand même ...
Marsh Posté le 13-06-2007 à 14:16:11
Citation : On est au 9 mais c'est pas grave |
Arf, bien envoyé ! ^^
Citation : Et si toi tu nous montrais tes sources, ça serait plus simple quand même ... |
J'en ai pas, justement, je les ai simplifié à mesure jusqu'à élimination complète faute de fonctionnement, pour finalement simplement tenter de faire fonctionner celles aimablement données par kaalh, à l'adresse : http://dl.free.fr/XB7S7V8U/Testflash.zip
Les seules différences avec ces sources sont :
1 clip de nom "aze" (un simple carré brut) dans la première frame de l'animation "test.swf"
Ce clip a deux frames, contenant chacune le code "stop();", et avec comme seule différence un positionnement du carré un peu plus à gauche dans la deuxième frame de ce même clip (pour voir une différence visuelle)
Dans le fichier main.swf, j'ai juste changé les instructions suivant "on (release)", pour mettre à la place "aze.nextFrame();" (ou _root.monclip.aze.nextFrame();, ou tout un tas d'autres trucs que j'ai testé les uns après les autres pour voir si un seul d'entre eux fonctionnait)
Bref, trois fois rien, comme tu le vois.
Je me doute que ta question avait pour but premier d'essayer de déceler une espèce de piratage ou escroquerie quelconque de ma part, peu de "noob" devant demander des sources directement plutôt qu'une explication.
C'est tout à fait logique de se poser ce genre de question
Pour y répondre, je dirais que je programme des jeux php depuis près de 5 ans (non, je ferais pas ma pub, cherchez pas), donc depuis 5 ans, je dois tenter de décrypter une vingtaine de questions par jour de joueurs qui croient déceler des bugs dans mes jeux (1/3 du temps ils ont raison ^^).
Donc, depuis le début, je perdais un temps considérable à des échanges de mail divers, où je passais environ 9/10 du temps à tenter de comprendre ce que me disaient mes interlocuteurs ou ce qu'ils oubliaient de me dire, pour finalement corriger le bug, une fois compris, en quelques minutes (ce n'est pas de la vantardise, c'est juste que mes jeux étaient simplistes, donc pas difficiles à débuguer)
Bref, à force d'en avoir marre de ces dialogues de sourds, j'ai fini par me coder des interfaces de prise de contrôle de leurs personnages, et par télécharger un maximum de navigateurs existants. Mes réponses à leurs questions sont, depuis : "t'as quel système d'exploitation, quel navigateur (numéro de version aussi) et quel perso", suite à quoi je constate les bugs de visu, et je les règles en cinq minutes montre en main dès réception du premier mail d'alerte.
Tout ça pour dire quoi ? Tout ça pour dire que je me mets à votre place : perdre des heures à tenter de me faire dire ce que je n'ai pas su comprendre depuis trois jours peut être long (la preuve, on est là dessus depuis hier, déjà) et assez soulant ("mais quel noob ce skatlan, c'est pas possible, on va pas y arriver s'il continue comme ça !" )
Donc, un bon exemple valant mieux que de longues explications, j'ai pris le partie de vous expliquer ce que j'essayais d'obtenir, et de vous demander humblement de me coder ces quelques lignes de démonstration, ce qui ne devrait pas vous prendre beaucoup de temps, et vous épargnerais de tenter de comprendre mes soucis pour me laisser me débrouiller avec un truc qui marche, point.
Donc mes sources originelles n'ont aucune importance, puisque je ne veux pas, comme dit l'adage, "qu'on me pêche du poisson, mais qu'on m'apprenne à pêcher".
....
....
Pendant l'écriture de ce message, j'ai tenté deux trois autres trucs, notamment un "export for actionscript" des divers symboles utilisés et un nommage systématique de "aze" (tout s'appelle "aze", maintenant, dans test.swf ^^), et... ça marche !
Je suis super heureux, et donc grâce à ce très aimable kaalh qui a pris cinq minutes pour me donner une bonne base de fichiers d'essai qui fonctionne, j'ai pu obtenir un résultat.
Comment ? Aucune idée, j'étudierais ça à mesure, pour l'instant tout ce qui m'intéresse c'est que ça marche, donc merciiiiiiiiiii
(vous embêtez pas, de toute façon, flash 6 est voué à disparaitre, alors on s'en fiche de comment ça a pu ne pas marcher, puis marcher tout à coup, je dois être un amateur pas si confirmé que ça, c'est tout ^^)
Merci à tous, je vous embêterais plus
PS :
Marsh Posté le 13-06-2007 à 14:41:25
skatlan a écrit :
|
Heuu non pas du tout. C'est juste que d'habitude c'est comme ça qu'on procéde. Puisque dans la charte du forum il est écrit qu'on ne fait pas le boulot à ta place, tu dois venir avec ce que tu as déjà fait et montrer où ça bloque.
Bonne continuation en tout cas
Marsh Posté le 13-06-2007 à 14:56:20
Désolé alors (j'avais vu passé ça sur certains forums, des piqueurs de sources ou je ne sais quoi, je me disais que vous vous méfiiez, ça aurait été normal, certains abusent de ce genre de trucs ^^)
Merci en tout cas ^^
Marsh Posté le 14-06-2007 à 00:24:38
Arf oui, au temps pour moi, j'ai mal compris le coup du clip dans le test.fla
Euh, sinon, tu devrais essayer sur le clip de ta scène de mettre un truc comme ça :
Code :
|
Si ça marche toujours pas, je t'enverrais le .fla, mais là j'ai pas trop le temps ^^
Marsh Posté le 12-06-2007 à 21:34:31
Voilà le truc, je vais faire court, je me débrouille pas mal en flash, mais j'ai un soucis totalement étrange et insoluble.
J'explique ce que je veux faire (c'est du archi-connu) : j'ai une anim "main.swf", une autre "test.swf"
test.swf contient deux keyframes, avec sur chacune un clip totalement quelconque qui me sert juste à repérer dans quelle frame je suis.
Chaque keyframe contient le code "stop();", c'est tout.
J'appelle ensuite ce "test.swf" depuis mon "main.swf", dans un movieclip appelé, tenez vous bien, "monClip", à l'aide d'un simple loadMovie du type :
_root.monClip.loadMovie("test.swf" );
Ensuite, j'aimerais juste passer à la deuxième frame de test.swf, donc normalement :
_root.monClip.gotoAndStop(2);
Et donc, devinez quoi ? Je n'arrive pas à passer sur la deuxième frame de "test.swf".
Du archi-connu donc : un problème de contrôle des fichiers externes chargés par loadMovie.
Ne vous attardez pas sur mon code, ça fait un peu près trois jours que j'ai testé absolument toutes les écritures possibles (sans parler des loadMovieNum, des lockroot et j'en passe énormement)
Non, n'essayez pas de m'expliquer pourquoi mon code ne marche pas, j'ai fait douze mille forum et tenté des millions de choses, rien ne fonctionne.
Ce que j'aimerais, mais vraiment, ce qui me ferait immensément plaisir, à un point que vous n'imaginez même pas, c'est qu'au lieu de lire une énième explication qui de toute évidence ne marchera pas chez moi (maudit des dieux, peut être ?) et de vous faire perdre votre temps comme le mien, j'aimerais juste que quelqu'un code simplement cela, vérifie que ça marche, et m'envoie les deux fichiers swf correspondant et les deux fichiers sources, que je puisse ne serait-ce qu'au moins voir, chez moi, une fois, ce fichu contrôle de fichier externe fonctionner.
Après je me débrouillerais, je bidouillerais ces fichiers bénis qui fonctionnent, jusqu'à me persuader (soyons fou) que je ne suis pas maudit, mais en attendant, ne perdez pas votre temps, montrer moi juste que oui, ça peut marcher, avec un joli zip d'exemple à la clé ^^ (et si en plus vous pouviez coder genre un clip à l'intérieur de "test.swf" dont on arrive à faire bouger les frames avec un petit "_root.monClip.ClipTest.nextFrame();" depuis le fichier principal, alors là je parlerais de vous à St pierre à ma mort pour lui dire quelle âme généreuse vous êtes ^^)
Merci de venir à la rescousse d'un amateur confirmé qui est repassé archi-noob en trois jours à peine.