Avatar billede maqhem Nybegynder
22. januar 2005 - 23:13 Der er 4 kommentarer og
1 løsning

Hvorfor duer min LOADING ikke?

Jeg har lavet en fla-fil, hvor de fire tre første frames er lavet KUN til pre-loading.
På den første frame har jeg lavet koden :

bytesTotal = getBytesTotal();
setProperty("_root.bar.barI.barII", _xscale, bytesTotal);
setProperty("_root.bar.barI", _xscale, "100");
setProperty("_root.bar.barI.barII", _xscale, bytesLoaded);
play();

På den næste frame har jeg lavet følgende:

bytesLoaded = getBytesLoaded();
_root.loadedN = bytesTotal/bytesLoaded*100 add " %";
setProperty("_root.bar.barI.barII", _xscale, bytesLoaded);
play();

Og på den sidste har jeg lavet:

if (_root.loadedN == "100 %") {
    gotoAndStop(4);
} else {
    gotoAndPlay(2);
}

(På alle frames har jeg en load-bar der hedder 'bar'. Inde i 'bar' har jeg endnu en der hedder 'barI'. Og inde i den, er der en der hedder 'barII'.

'loadedN' er en variabel, ligsom 'bytesLoaded' og 'bytesTotal').
Hvorfor virker det så ikke?
Avatar billede maqhem Nybegynder
22. januar 2005 - 23:24 #1
Ellers tak - fandt ud af det selv... ;)
Avatar billede barklund Nybegynder
23. januar 2005 - 00:40 #2
Jeg håber virkelig, at du overvejer, at bruge en lidt mere moderne metode end ovenstående? setProperty og add brugte man tilbage i Flash 4 - selv i Flash 5 var de gammeldags. Og selve tankegangen med et decideret frameloop blev overflødig i Flash 6.

Hvis du selv har lavet det, så bør du nok sætte dig ind i lidt nyere actionscript - med mindre det altså er Flash 4, du er ved at publisere til :)

--
Morten Barklund
Avatar billede maqhem Nybegynder
23. januar 2005 - 09:20 #3
Hvad bruger man så i stedet for 'add' og 'setProperty'?
Og hvordan ville du have lavet det uden et 'decideret frameloop', der jo blev 'overflødigt' i Flash 6?
Jeg bruger Flash MX - det er vel det du kalder for Flash 6?

Nicolaj
Avatar billede mat Nybegynder
23. januar 2005 - 11:26 #4
Istedet for "add" bruger man + (et ganske almindeligt plustegn). Og siden flash 5 tilgår man egenskaberne direkte med:

_root.bar.barI.barII._xscale = bytesLoaded;

Istedet for frameloops kan du bruge onEnterFrame til at køre kontinuerlig kode.

mvh mat
Avatar billede barklund Nybegynder
23. januar 2005 - 14:00 #5
Præcis som mat siger, så kan det skrives på én frame som:

stop();
bar.barI._xscale = 100;
function testLoad() {
    var p = Math.floor(getBytesLoaded() / getBytesTotal() * 100);
    bar.barI.barII._xscale = p;
    loadedN.text = p+" %";
    if (p == 100) {
        delete onEnterFrame;
        nextFrame();
    }
}
onEnterFrame = testLoad;

Og i ovenstående er det yderligere skiftet, så "loadedN" ikke er en variabel for et tekstfelt men et instance navn.

--
Morten Barklund :)
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