IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Discussion :

[FLASH 8] Préchargement (et non pas progression) d'image


Sujet :

Flash

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut [FLASH 8] Préchargement (et non pas progression) d'image
    Bonjour,

    je cherche depuis un petit moment déjà sur ce forum (et sur l'aide flash) comment précharger une image. Je parle bien de préchargement ! pas de progression de téléchargement (ça, j'ai trouvé de la doc à la pelle).

    En fait, je cherche a faire un diaporama qui puisse passer d'une image a l'autre sans temps d'attente entre les images (donc avec préchargement)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var i:Number = new Number(1);
    btnm_btn.onPress = function()
    {
    	zoneimg_img.loadMovie("./"+i+".gif");
    	_root.i++;
    	if(_root.i > 10) _root.i = 1;
    }
    btnm_btn étant un bouton qui doit me faire avancer à l'image suivante et l'afficher sur mon clip zoneimg_img. C'était là un test de chargement d'image puisque je me suis mis au flash il y a 3 jours et que je maitrise encore tres mal ce langage.

    Je me suis donc ensuite dit, maintenant que j'ai ça, je vais essayer de trouver un moyen de remplacer l'URL de l'image un objet contenant une image déjà chargée, ce qui me semblait-il correspondait a MovieClipLoader. Je me demande néanmoins à présent si c'est pas juste un composant pour la progression du chargement...

    Bref, j'ai essayé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var lst:Array = new Array();
    for(j=1;j<=10;j++)
    {
    	lst[j] = new MovieClipLoader();
    	lst[j].loadClip("./"+j+".gif");
    }
    Si je comprend bien, là, j'ai bien préchargé mes images (1.gif, 2.gif, 3.gif...) dans mon tableau lst.

    Ma question est donc, que dois-je changé (en considérant que j'ai bien utilisé le bon objet) au code de mon bouton pour afficher le contenu de lst[i] ???

    En vous remerciant par avance !
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  2. #2
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    bonsoir,

    je cherche depuis un petit moment déjà sur ce forum (et sur l'aide flash) comment précharger une image. Je parle bien de préchargement ! [...]
    Citation Envoyé par documentation flash
    loadClip(url:String, target:Object) : Boolean
    Loads a SWF, JPEG, progressive JPEG, unanimated GIF, or PNG file into a movie clip in Flash Player while the original movie is playing.
    lst[j].loadClip("./"+j+".gif");
    Si je comprend bien, là, j'ai bien préchargé mes images (1.gif, 2.gif, 3.gif...) dans mon tableau lst.
    Non, elle ne son ni chargé ni prechargé.Le parametre target n'est pas optionnel, il faut l'indiquer. Cette object est un object movieClip. Si tu verifie, la méthode load te retourne un joli false.

    Une idée me vient, un peu a la façon javascript, peut etre qu'en utilisant la class loadvars tu devrai pouvoir precharger tes images. ( tu sais ce qu'est un MIME ) .


    PS: Ca serrai cool que tu partager un peu de code si tu y parvient

  3. #3
    Membre habitué Avatar de solarishp
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 123
    Points : 140
    Points
    140
    Par défaut
    Bonjour gloubi,

    je te conseil d'utiliser la classe MovieClipLoader si tu es sur Flash MX 2004 et version sup.


    Voici un petit exemple sur la classe MovieClipLoader ! Elle est utilisée pour charger des swf ou jpg.

    Voici l'exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    // premier ensemble d’écouteurs
    var mon_mcl = new MovieClipLoader();
    monEcouteur = new Object();
    monEcouteur.onLoadStart = function (cible_mc)
    {
    maTrace ("*********Première occurrence de mon_mcl*********");
    maTrace ("Votre chargement a commencé sur le clip . = " + cible_mc);
    var loadProgress = mon_mcl.getProgress(cible_mc);
    maTrace(loadProgress.bytesLoaded + " = octets chargés au démarrage");
    maTrace(loadProgress.bytesTotal + " = total des octets au démarrage");
    }
    monEcouteur.onLoadProgress = function (cible_mc, loadedBytes, totalBytes)
    {
    maTrace ("*********Progression de la première occurrence de
    mon_mcl*********");
    maTrace ("onLoadProgress() rappelé sur clip " + cible_mc);
    maTrace(loadedBytes + " = octets chargés au rappel de progression " );
    maTrace(totalBytes + " = total octets au rappel de progression \n");
    }
    monEcouteur.onLoadComplete = function (cible_mc)
    {
    maTrace ("*********Première occurrence de mon_mcl*********");
    maTrace ("Votre chargement est effectué sur le clip = " + cible_mc);
    var loadProgress = mon_mcl.getProgress(cible_mc);
    maTrace(loadProgress.bytesLoaded + " = octets chargés à la fin");
    maTrace(loadProgress.bytesTotal + " = total des octets à la fin");
    }
    monEcouteur.onLoadInit = function (cible_mc)
    {
    maTrace ("*********Première occurrence de mon_mcl*********");
    maTrace ("Clip = " + cible_mc + " est maintenant initialisé");
    // vous pouvez maintenant effectuer tous les réglages requis, par exemple :
    cible_mc._width = 100;
    cible_mc._width = 100;
    }
    objetDecoute.onLoadError() = function (cible_mc, errorCode) {
    {
    maTrace ("*********Première occurrence de mon_mcl*********");
    maTrace ("CODE ERREUR = " + codeErreur);
    maTrace ("Votre chargement a échoué sur le clip = " + cible_mc + "\n");
    }
    mon_mcl.addListener(monEcouteur);
    //Charger maintenant les fichiers dans leurs emplacements cibles.
    // charge dans les clips - chaînes utilisées en tant que cibles
    mon_mcl.loadClip("http://www.undomaine.quelquepart.com/
    unFichier.swf","_root.monMC");
    mon_mcl.loadClip("http://www.undomaine.quelquepart.com/unAutreFichier.swf",
    "_level0.monMC2");
    //échec du chargement
    mon_mcl.loadClip("http://www.undomaine.quelquepart.com/unFichier.jpg",
    _root.monMC5);
    // charge dans les clips - occurrence de clip utilisée en tant que cible.
    mon_mcl.loadClip("http://www.undomaine.quelquepart.com/unAutreFichier.jpg",
    _level0.monMC3);
    si tu veux plus d'explications sur la classe MovieClipLoader, regarde ce poste-ci : ici

    voilà en espérant que cela puisse t'aider.
    Respecter la charte du forum pour rappel ! Ici
    Vérifier l’orthographe de vos messages
    Il ne faut pas penser à l'objectif à atteindre, il faut seulement penser à avancer. C'est ainsi, à force d'avancer, qu'on atteint ou qu'on double ses objectifs sans même sans apercevoir.

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    J'utilise Flash 8 professionnal.

    Bon, j'avous avoir du mal avec vos réponses... Je pense que c'est plus ce langage qui me perturbe (j'ai l'impression d'être sur un langage ni conventionnel, ni orienté objet).

    je vais batailler un peu avec tout ça avant de poser plus de questions...

    Heuuu... On peut charger du SWF et JPG... et pas Gif ou PNG ???
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  5. #5
    Membre habitué Avatar de solarishp
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 123
    Points : 140
    Points
    140
    Par défaut
    Citation Envoyé par gloubi
    J'utilise Flash 8 professionnal.

    Bon, j'avous avoir du mal avec vos réponses... Je pense que c'est plus ce langage qui me perturbe (j'ai l'impression d'être sur un langage ni conventionnel, ni orienté objet).

    je vais batailler un peu avec tout ça avant de poser plus de questions...

    Heuuu... On peut charger du SWF et JPG... et pas Gif ou PNG ???
    Si tu peux charger des Gif et des PNG aussi
    Respecter la charte du forum pour rappel ! Ici
    Vérifier l’orthographe de vos messages
    Il ne faut pas penser à l'objectif à atteindre, il faut seulement penser à avancer. C'est ainsi, à force d'avancer, qu'on atteint ou qu'on double ses objectifs sans même sans apercevoir.

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Bon, j'ai beau relire vos réponses dans tous les sens, je crois que personne n'a réellement compris ce que je voulais faire

    Je veux créer de mini animations dynamique en fonction du contenu d'un répertoire d'image. Donc tout simplement, je veux pouvoir afficher des images les unes derrieres les autres sans chargement entre. J'essaye donc de charger ces images sur l'appli, si possible dans un tableau (de taille variable). la progression du chargement ne m'interesse pas, et je limiterai strictement l'usage du moviecliploader pour déterminer quand lancer l'animation.

    Comme je suis en train d'apprendre, j'ai fait un 1er test en local grace à la fonction LoadMovie. avec cette fonction, je fait mon_mc.loadmovie("./"+i+".gif") et là, aucun problème.

    Là ou ça commence a chier, c'est quand je veux remplacer mon loadmovie par un loadclip...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zoneimg_mc.loadClip("./"+i+".gif", "_root.mon_mc1");
    avec "_root.mon_mc1" qui aura pris tout un tat de valeur pour essayer...
    Si je fait un trace de la ligne, j'ai undefined, et sur un IF, c'est toujours le cas false.
    Ca marchait pourtant tres bien avec le loadmovie et un seul parametre.

    Ensuite, de ce que j'ai compris, je suis obligé de créer un clip pour chaque images... Je n'ai pas encore touché au problème puisque je suis toujours bloqué sur l'étape du dessus, mais je me pose quand même une question... est-il possible de définir un contener pour l'affichage auquel je pourrais passer l'image a afficher, ou vais-je devoir créer un clip pour chaque image et jouer sur leurs propriétés pour les afficher ou non ?

    En fait, je vois assez mal comment je vais pouvoir passer d'une image a l'autre (bha oué, tous les tuto présentent des cas de figure avec chargement entre chaque images).

    Merci pour vos réponses, et toutes mes excuses pour mes questions :p

    PS : concernant mon code source, c'est vraiment des essais destiné a comprendre comment ça marche, il n'ai rien que je puisse copier/coller ici... ce sont des suites de petits tests. Dès que j'ai mieux a proposer, je le posterai ici


    - - - - - - - E D I T - - - - - - - - - -

    loadClip(url:String, target:Object) : Boolean
    Loads a SWF, JPEG, progressive JPEG, unanimated GIF, or PNG file into a movie clip in Flash Player while the original movie is playing.
    arf, en fait, c'était la partie suivante qui m'interessai :p (désolé, j'ai acheté une version FR) :

    L'utilisation de cette méthode vous permet d'afficher plusieurs fichiers SWF simultanément, puis de basculer entre les fichiers SWF sans charger un autre document HTML.
    et ils ajoutent :

    Vous pouvez utiliser la méthode loadClip() pour charger un ou plusieurs fichiers dans un clip ou niveau unique ; les objets écouteurs MovieClipLoader reçoivent les paramètres d'occurrence de clip cible en cours de chargement. Sinon, vous pouvez également créer un objet MovieClipLoader différent pour chaque fichier que vous chargez.
    Mis a part que pour moi, ça charge rien du tout, ça explique pas comment on switch d'un clip à l'autre... Des suggestions ?

    Bon, je continu a creuser... Si quelqun sait pourquoi ça me charge rien...
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    var mcLoader:MovieClipLoader = new MovieClipLoader();
    mcLoader.addListener(this);
     
     
    function onLoadInit(mc:MovieClip) {
         trace("onLoadInit: " + mc);
    }
     
    for(i=1;i<=10;i++)
    {
    	mcLoader.loadClip("./"+i+".gif", zoneimg_img);
    }
     
    var j:Number = new Number(1);
     
    btnp_btn.onPress = function()
    {
    		mcLoader.loadClip("./"+i+".gif", zoneimg_img);
    		_root.i++;
    		if(_root.i > 10) _root.i = 1;
    }
    Bon, j'ai ça, recombination entre l'aide flash et ma page a moi, ce qui fonctionne a peu près, sauf que :

    1 - je ne l'ai pas testé sur le net avec une vrai connexion lente
    2 - malgré le fait que je sois en local, j'ai quand même des blancs entre chaque images
    3 - j'ai quand même bien l'impression (et un peu plus) qu'a chaque fois, je recharge la meme image en entier, et que je ne met rien du tout en cache...

    EDIT : je viens de faire le test sur le web, donc je ne sais pas si c'est du préchargement ou juste une hsitoire de cache, mais une fois chargée une premiere fois, avec le code ci-dessus, le réaffichage des images est quasiment instantané... Je dit quasiment, car on a quand même le temps de voir un joli blanc entre chaque image... Et c'est moche une animation avec des blancs entre chaque images lol.

    Je sens que je vais encore bien m'amuser :/

    EDIT 2 : si je ferme l'explorateur et le relance, sur la version en ligne, le 2e chargement d'image se fait à la même vitesse qu'une fois les images chargées. Je suis donc fortement tenté de supposer qu'il s'agit bien simplement d'une mise en cache et aucunement d'un préchargement.
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  8. #8
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Re Bonjour,

    En fait, je cherche a faire un diaporama qui puisse passer d'une image a l'autre sans temps d'attente entre les images (donc avec préchargement)
    A tu regardé dans les tutoriel flash ? Je pense que pour ce que tu souhaite faire, tu pourras y trouver toutes les réponse que tu te poses.

    Le truc :
    quand ton animation flash commence, tu charge tes image l'une apres l'autre(tu attends que l'image est fini d'etre chargé pour pouvoir commencer a charger la suivante -optimisation-). A la chaque foi qu'un image est chargé, tu la rend invisible via la propriété _visible de la class movieClip

    Lorsque le client clique pour afficher l'image suivante, tu rend visible le clip(l'image) suivant ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mc_image._visible=true;mc_image étant le clip contenant l'image a afficher
    Et tu rend invisible l'image qui a été vue avec la meme propriété. (a toi de gérer si tu veux afficher plusieur image a la foi ou pas)

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     for(i=1;i<=10;i++)
    {
    	_root.createEmptyMovieClip('img' + i, i);
    	_root['img'+ i]._alpha = 0;//100;
    	_root['img'+ i]._visible = false;//false;
    	_root['img'+ i]._x = 0;//Stage.width;
    	_root['img'+ i]._y = 0;//Stage.height;
    	_root['img'+ i].loadMovie('./'+i+'.gif', 1);
    	//_root['img'+ i].loadClip('./'+i+'.gif', 1);
    }
     
    var i:Number = new Number(1);
    next_btn.onPress = function()
    {//mcLoader.loadClip("http://www.s-trad.net/testdev/"+i+".gif", zoneimg_img);
    		trace(i);
     
    		for(j=0;j<=10;j++)
    			if(i != j)
    			{
    				_root['img'+ j]._alpha = 0;// = true;
    				_root['img'+ j]._visible = false;				
    			}
     
     
    		_root['img'+ i]._alpha = 100; //loadMovie('./'+i+'.gif', 1);
    		_root['img'+ i]._visible = true;
     
    		_root.i++;
    		if(_root.i > 10) _root.i = 1;
     
    }
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FLASH 8] Créer une barre de progression d'un flv
    Par matt89 dans le forum Intégration
    Réponses: 2
    Dernier message: 20/04/2006, 17h40
  2. Win XP sur FAT32 et non pas NTFS
    Par ixterm dans le forum Windows XP
    Réponses: 7
    Dernier message: 15/02/2006, 06h53
  3. [Ah non pas Resolu] [CSS] Un probleme CSS
    Par vampyrx dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 18/08/2005, 00h38
  4. [ImageMagick] Recadrer une photo et non pas la diminuer
    Par max44410 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 27/07/2005, 21h38
  5. Réponses: 18
    Dernier message: 19/08/2004, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo