Avatar billede mdez Nybegynder
29. december 2003 - 10:16 Der er 13 kommentarer og
1 løsning

XML load funktion - helst med preload

Jeg har lavet følgende til at hente mine XML-filer:

MovieClip.prototype.getXML = function(xmlFile,xmlPath)
{
    theXML = new XML();
    theXML.ignoreWhite = true;
    theXML.load(_global.contentFolder+xmlPath+xmlFile+noCache());
    theXML.onLoad = function (success)
    {
        if (success)
        {
                processXML(theXML);
                }
    }
}

Og det vil sådan set fungere fint. Men hvad hvis der skal store filer ned eller brugeren sidder med en træls langsom forbindelse? - Så skal jeg vel have en preloader ind?
Er der en fiks måde at bygge en preloader ind i denne funktion? - altså så jeg stadig bare kan bruge et tomt movieclip med funktionen?
Avatar billede mat Nybegynder
29. december 2003 - 10:51 #1
Uden at være nogen ekspert, ville jeg tro at du skal bruge et loop for at lave en xml-preloader (ihvertfald hvis du er interesseret i at kende getBytesLoaded til et vilkårligt tidspunkt).

Og ovenstående metode virker ikke umiddelbart logisk at have i et loop?
Avatar billede jakwag Nybegynder
29. december 2003 - 10:51 #2
hej

Jeg kan ikke svare på dit spm. men du behøves ikke at bruge et tomt mc fordi at MainTimeline i virkeligheden osse er et mc. så du vil altid kunne kalde din function derfra.

: ) Jakob
Avatar billede jakwag Nybegynder
29. december 2003 - 11:00 #3
Da det er en function til et mc, kan man vel lave et dummy mc som kun bruges til at lave selve loopet på. Noget i retning af:

MovieClip.prototype.getXML = function(xmlFile,xmlPath)
{
    theXML = new XML();
    theXML.ignoreWhite = true;
    theXML.load(_global.contentFolder+xmlPath+xmlFile+noCache());
    this.createEmptyMovieClip("looper",999);
    this.looper.onEnterFrame = function(){
        this.loadet = theXml.getBytesLoaded();
        this.total = theXml.getBytesTotal();
        this.procent = this.loaded/this.total*100;
        trace(this.procent);
    }
    theXML.onLoad = function (success)
    {
        if (success)
        {
                processXML(theXML);
                }
    }
}

Så kan du bruge this.procent til et eller andet grafisk preloader halløj.
Jeg har ikke testet det...
Avatar billede jakwag Nybegynder
29. december 2003 - 11:02 #4
For en god ordens skyld skal du nok lige slette looper når den er færdig...

MovieClip.prototype.getXML = function(xmlFile,xmlPath)
{
    theXML = new XML();
    theXML.ignoreWhite = true;
    theXML.load(_global.contentFolder+xmlPath+xmlFile+noCache());
    this.createEmptyMovieClip("looper",999);
    this.looper.onEnterFrame = function(){
        this.loadet = theXml.getBytesLoaded();
        this.total = theXml.getBytesTotal();
        this.procent = this.loaded/this.total*100;
        trace(this.procent);
        if(this.procent == 100){
            this.removeMovieClip();
        }
    }
    theXML.onLoad = function (success)
    {
        if (success)
        {
                processXML(theXML);
                }
    }
}
Avatar billede mat Nybegynder
29. december 2003 - 11:04 #5
Jeg tror du har ret jakwag, men hvorfor så ikke bruge movieclippets egen onEnterFrame istedet for at oprette et helt nyt?
Avatar billede nikolajdu Nybegynder
29. december 2003 - 11:08 #6
theXML != theXml

Skal lige være samme case...
Avatar billede jakwag Nybegynder
29. december 2003 - 11:21 #7
for en sikkerheds skyld. Det kan jo være at der allerede er en onEnterFrame på mc'et. Den ville jo elleres blive overskrevet.
Avatar billede barklund Nybegynder
29. december 2003 - 12:15 #8
jakwag >>

Det er helt rigtigt observeret - vi vil jo ikke slette eksisterende onEnterFrame's (men jeg tænkte på det samme)!

nikolajdu >>

theXML = new XML();
trace(theXML == theXml); // de er da ens(?)... ;)

mdez >>

generelt havde jeg lavet et "almindelig" funktion til dette i stedet for at "forurene" MovieClip's prototype.

Skal du da loade XML mange forskellige steder på mange forskellige MovieClip's?
Avatar billede nikolajdu Nybegynder
29. december 2003 - 13:00 #9
Ifølge AS 2 burde der være forskel på upper og lowercase variabler.
Avatar billede jakwag Nybegynder
29. december 2003 - 13:43 #10
... og hvis vi køre med AS2 bør der nok stå:

this.createEmptyMovieClip("looper",this.getNextHighestDepth());
Avatar billede barklund Nybegynder
30. december 2003 - 13:37 #11
Det er ikke AS2 men Flash7 - der er forskel - men ja, det bør der stå ;)
Avatar billede jakwag Nybegynder
09. januar 2004 - 10:24 #12
Fandt du ud af det?!
Avatar billede mdez Nybegynder
10. januar 2004 - 14:00 #13
Ja - 1000tak - mangler lige et svar - benyttede det du (jakwag) præsenterede først :) - smid lige et svar.

og igen - mange tak for alles hjælp!
Avatar billede jakwag Nybegynder
12. januar 2004 - 12:29 #14
velbekommen! : )
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester