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 :

Loader Flash pour le cache Navigateur?


Sujet :

Flash

  1. #1
    Membre du Club
    Loader Flash pour le cache Navigateur?
    Salut tout le monde,

    Jusqu'a aujourd'hui j'utilisais un loader Flash pour loader tout mes clips dans un site entièrement en flash. Je souhaites maintenant revenir à quelque chose de plus classique avec un Loader Flash et le reste en html/Javascript/Css (pas de XML)...

    Je me demande s'il est possible de faire un Loader en Flash qui load certaines données (images et autres...) et qui place ca dans le cache du navigateur avant de passer à une page html (on quitte donc le clip flash) ?

    Si vous voyez de meilleur solutions, n'hésitez pas à me conseiller!
    Merci!

    Gian

  2. #2
    Membre du Club
    Bon, voici ou j'en suis aujourd'hui, et ca n'a pas l'air de marcher (bon la j'ai surement merdé dans le loader standard, mais bon) :

    Frame #1
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //initialisations:
    var largeurBarre = getProperty(loadBar, _width );
    var files:Array = new Array("./pics/ConcertsBG2-3.jpg","./pics/header_suite2.jpg"); 
    var total_bytes = 0;
     
    this.createEmptyMovieClip("index", this.getNextHighestDepth());
     
    for(i=0; i<files.length; i++)
    	total_bytes = total_bytes + this.files(i).getBytesTotal();


    Frame #2
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    loaded_bytes = _root.getBytesLoaded(); //récupère le poids déjà chargé de l'animation
    remaining_bytes = total_bytes-loaded_bytes; //calcul le poids de l'animation qu'il reste à charger
     
    //pourcentage de chargement
    pourcentage = loaded_bytes/total_bytes;
    percent_done = int(pourcentage*100);
     
    //affecte la nouvelle taille au clip
    setProperty(loadBarFull, _width ,int(largeurBarre*pourcentage));
     
    //affichage pourcentage chargé
    _root.percent = Math.round(percent_done)add '%';


    Frame #3
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //Tout est chargé:
    if(remaining_bytes<=0)
    	gotoAndStop(4);
    else
    	gotoAndPlay(2);


    Ca charge instantanément ...

  3. #3
    Membre du Club
    Je pense qu'un des 46513 problème vient aussi de la méthode getTotalBytes() qui ne fonctionne que sur un objet Flash (une instance de MovieClip je crois me rappeller?)?

    Quelles sont les solutions ?

  4. #4
    Membre du Club
    Voilà, ca me load bien l'image, mais ca la place dans l'anim flash... impossible de la placer en cache ?

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    //creation MCs
    this.createEmptyMovieClip("index", this.getNextHighestDepth());
     
    var trucacharger:Array = new Array("./pics/ConcertsBG2-3.jpg","./pics/header_suite2.jpg"); 
    var infosArray:Array = new Array("Chargement : Version Lite");
    var numero:Number=0; 
    var nextnum:Number=0;
     
    //Creation Listener :
    var mclListener:Object = new Object();
    mclListener.onLoadInit = function(clip:MovieClip) {
    };
    mclListener.onLoadStart = function(clip:MovieClip) 
    {
    		nextnum=numero+1;
    		preloader.infos.text=infosArray[numero];
    		preloader.fichiers.text="Fichier : " + nextnum +"/1";
            preloader._visible = true;
            preloader.loadBarFull._xscale=0;
    };
    mclListener.onLoadProgress = function(clip, w, t) {
            var w = clip.getBytesLoaded();
            var t = clip.getBytesTotal();
    		preloader.loadBarFull._xscale =Math.round(w*338.1/t);
            preloader.percent.text = Math.round(w/t*100) + " %";	
    };
    mclListener.onLoadComplete = function(clip:MovieClip) {   
            preloader.percent.text = "";
    		numero++; 		
    		loadNext();
    };
    mclListener.onLoadError = function(clip:MovieClip, errorCode:String) {     
            preloader.percent.text = "Error loading basic files";
    };
     
    //Creations MCLoaders :
    var myLoader:MovieClipLoader = new MovieClipLoader();
    myLoader.addListener(mclListener);
     
    myLoader.loadClip("./pics/ConcertsBG2-3.jpg",index);
     
    var loadNext:Function = function(Void):Void
    {   
    	if (numero < trucacharger.length)
    	{
    		switch(numero)
    		{
    		case(0):break;
    		case(1):
    			myLoader.loadClip(trucacharger[numero],mvt2_mc);
    			break;
    		case(2):
    			myLoader.loadClip(trucacharger[numero],mvt4_mc);
    			break;
    		case(3):
    			myLoader.loadClip(trucacharger[numero],mvt6_mc);
    			break;
    		case(4):
    			myLoader.loadClip(trucacharger[numero],mvt8_mc);
    			break;
    		}
    	}
    	else
    	{ 
    		//tout est chargé :
    		this.nextFrame();
    	}
    }
    this.stop();


    Edit : je suis sous Flash MX 2004

  5. #5
    Membre du Club
    Bon j'ai mis la main sur un hack (trick) permettant de faire ca
    ici.

    Edit : ca compile bien, mais ... ca ne semble pas fonctionner... sans doute une erreur bête dans le code... une idée ?

    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
    import code.FilePreloader;
    import mx.utils.Delegate;
     
    preloader.fichiers.text="Fichier : " + 0 +"/1";
    preloader._visible = true;
    preloader.loadBarFull._xscale=0;
     
    onLoadStartHandler = function(o:Object):Void 
    {	 
    	preloader.fichiers.text="Fichier : " + 0 +"/1";
        preloader._visible = true;
        preloader.loadBarFull._xscale=0;
    };
     
    onLoadProgressHandler =  function(o:Object):Void 
    {	 
    	var w = myPreLoader.currentLoadProgress();
    	preloader.loadBarFull._xscale =Math.round(w*200/t);
    	preloader.percent.text = Math.round(w/t*100) + " %";
    }
     
    onLoadCompleteHandler = function (o:Object):Void 
    {
       gotoAndPlay(3);
    };
     
    myPreloader = new FilePreloader();
    myPreloader.addEventListener("loadComplete", Delegate.create(this, onLoadCompleteHandler));
    myPreloader.addEventListener("onLoadStart", Delegate.create(this, onLoadStartHandler));
    myPreloader.addEventListener("onLoadProgress", Delegate.create(this, onLoadProgressHandler));
    myPreloader.preload(["./pics/ConcertsBG2-3.jpg", "./pics/header_suite2.jpg"]);


    Merci!

  6. #6
    Futur Membre du Club
    ça vient de ton pseudo ..
    solo ...

    Il marche ton loader au bout de 2 ans ?

    Si tu es devenu un pro de la problématique des loads de flv sur une page http, j'aurais des questions à te poser ...


###raw>template_hook.ano_emploi###