PB avec la classe MovieClipLoader

PB avec la classe MovieClipLoader - Flash/ActionScript - Programmation

Marsh Posté le 15-12-2005 à 19:23:49    

desole pour le spam mais le bug m'a été signalé par le client car de chez moi moi je vois rien (des fois on se dit putain de haut debits ;) )
ca se passe la:
http://photo-graphic-73.com/galerie.php
taper test dans la zone d'input puis entrer (ou le bouton continuer)
 
Il me dit que les thumbnail d'image de portrait (l'apercu a gauche du nom) apparraissent qq seconde puis disparaissent ausitot, vu mon code je ne comprend pas bien pourquoi...
 
voici un extrait du dit code (plus sur demande):

Code :
  1. //mon MovieClipLoader (spécifique au thumb), j'en ai un autre pour les grand apercus
  2. var jpgthumbloader_mcl:MovieClipLoader = new MovieClipLoader();
  3. var jpgthumbListener:Object = new Object();
  4. jpgthumbListener.onLoadInit = function(target_mc:MovieClip) {
  5.     target_mc._x = 0-target_mc._width/2;
  6.     target_mc._y = 0-target_mc._height/2;
  7. };
  8. jpgthumbloader_mcl.addListener(jpgthumbListener);
  9. //elle est appellé des l'instanciation d'un fichier image:
  10. MovieClip.prototype.fichier = function(info) {
  11.     //[...]
  12.     this.chemin = info[5];
  13.     this.cheminthumb = this.chemin+info[6];
  14.     jpgthumbloader_mcl.loadClip(this.cheminthumb, this.cadre_mc);
  15.     //[...]
  16. }
  17. //le fichier image est lui même créé a la lecture d'un fichier xml:
  18. function OnLoad(success:Boolean) {
  19.     if (success) {
  20.         //[...]
  21.         var info:Array = new Array(level, occ, type, nom, taille, chemin, nomthumb);
  22.         protofichier_mc.duplicateMovieClip("fichier"+occ+"_mc", occ);
  23.         _root["fichier"+occ+"_mc"].fichier(info);
  24.         //[...]
  25.     }
  26. }


sans doute que la classe est débordés d'avoir a charger toutes ces images en même temps mais que faire ?


Message édité par mechkurt le 18-12-2005 à 13:53:20

---------------
D3
Reply

Marsh Posté le 15-12-2005 à 19:23:49   

Reply

Marsh Posté le 15-12-2005 à 19:54:05    

Mmmmh bizarre pas de problème de disparition ici chez moi non plus [:urd]
Mais je pense avoir eu aussi un jour ce genre de problème où tout se passait bien en haut débit mais ça déconnait en bas débit ...
Maintenant, ce que tu pourrais faire, c'est instancier un MCL par image à charger et pas oublier de le deleter après ... c'est pas la meilleure solution .. mais ça pourrait le faire ..

Reply

Marsh Posté le 15-12-2005 à 20:10:32    

c'est ce que je pensais faire, je vais essayer et puis je verais si ca marche mieux, a ton avis je peux le deleter a la fin du onloadinit ou vaux mieux temporiser ca d'une autre maniere ?


---------------
D3
Reply

Marsh Posté le 15-12-2005 à 22:29:56    

mmmmh il faudrait que tu revérifies la différence fondamentale entre le onLoadInit et le onLoadComplete ... ;)
 
De toute façon, je ne pense pas qu'un objet puisse se détruire lui-même en Flash ...  
 
Mais ... en gérant peut-être un tableau de tes MCL qui, par exemple, s'assigneraient une variable à une certaine valeur quand ils ont fini de charger ( onLoadComplete donc ;) ) et une petite routine de suppression en cascade dans l'anim principale quand tout est chargé .....
C'est pas des plus joli .. mais c'est juste une idée comme ça ...


Message édité par Mr Mala le 15-12-2005 à 22:30:48
Reply

Marsh Posté le 16-12-2005 à 09:08:42    

mouais j'envisageai un truc dans ce genre la, de toute facon je sais pas trops comment cibler le MovieClipLoader autrement que comme ca...
 
pour la diff entre onLoadInit et onLoadComplete, je connais, j'ai vu ca sur les livedocs, pourquoi tu me dit ca ?
 
c'est que courament j'ai des prototypes qui s'autodetruisent apres avoir fait leur boulot genre:

Code :
  1. MovieClip.prototype.truc = function() {
  2.   //[...]
  3.   this.onEnterFrame = function() {
  4.      //[...]
  5.      if(tuestmort) {
  6.         delete this.onEnterFrame;
  7.         this.removeMovieClip();
  8.         delete this;
  9.      }
  10.   }
  11. }


d'ailleur je me suis toujours demandé si la derniere ligne était vraiment necessaire (dans le doute je la laisse) ?
 
mais pour le moviecliploader, je peux pas faire comme ca...

Message cité 1 fois
Message édité par mechkurt le 18-12-2005 à 13:53:50

---------------
D3
Reply

Marsh Posté le 16-12-2005 à 10:33:06    

mechkurt a écrit :


pour la diff entre onLoadInit et onLoadComplete, je connais, j'ai vu ca sur les livedocs, pourquoi tu me dit ca ?


 
Au temps pour moi, j'inversais :p
 
A propos du "delete this;" , qqun il y a des lustres avait posté un topic là-dessus ( carément le 2ème topic de la cat !!! )
http://forum.hardware.fr/hardwaref [...] 4064-1.htm
Je ne pense pas qu'il y ait eu une réponse ...


Message édité par Mr Mala le 16-12-2005 à 10:33:22
Reply

Marsh Posté le 16-12-2005 à 12:38:31    

pas grave (au contraire te voir commaitre une erreur me remonte le moral, Mr Mala n'est pas infaillible, il se leve le matin et vas au toilette c'est un être humain ! ;) )
 
au lieu de faire un delete de this.onEnterframe, this.onPress, this.mavariable, etc...
est ce que la solution ne serait pas de faire un truc de ce genre:

Code :
  1. for (prop in this) {
  2.    delete this[prop];
  3. }
  4. this.removeMovieClip();


le pointeur this existera toujours, ca c'est sur mais il pointera plus sur grand chose  :D  
 
<hors sujet> tu fait quoi comme taf (Flasheur independant, formateur technique WEB, esclave dans une grosse boite a manger du SQL) ?</hors sujet>


Message édité par mechkurt le 18-12-2005 à 13:54:12

---------------
D3
Reply

Marsh Posté le 16-12-2005 à 17:42:28    

Ben le problème, c'est que dans ce cas précis, ce n'est pas un MovieClip, c'est un MovieClipLoader, 'simple' objet ...
Je dois avouer que je ne me suis jamais vraiment penché sur le problème de cette occupation/libération de la mémoire ... je devrais peut-être .. si ça se trouve, mes anims sont des bouffes-mémoire que j'en sais même rien ! ;)

Reply

Marsh Posté le 16-12-2005 à 18:24:06    

non pas pour mes movieclipLoader mais une soluce à tenté pour un prototype ou une classe...
 
sinon tout pareil ;)


---------------
D3
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed