Avatar billede level75 Nybegynder
15. maj 2004 - 15:16 Der er 12 kommentarer og
2 løsninger

afslut en mc og så Preloade - help :D

Hey alle eksperter!!!
Jeg har et spørgsmål. Jeg vil høre hvordan man kan lave en preloader, sådan så den først spiller det forhenværende movieclip færdigt, og så loader den ny ind hvor efter den så afspiller det nye movieclip.
Avatar billede level75 Nybegynder
15. maj 2004 - 16:24 #1
er der ik nogle der forstår min mening?
Avatar billede pyroman Nybegynder
15. maj 2004 - 17:04 #2
Jo det kan da nemt laves:

i _root (din hovedfilm) har du følgende kode:

var currentMC = 1;
_root.createEmptyMovieClip("holder", 1);
function loadMC (num){
  holder.loadMovie("swfnavn"+num+".swf");
  this.onEnterFrame = function(){
    if(holder.getBytesLoaded() == holder.getBytesTotal() && holder.getBytesTotal > 0){
      delete this.onEnterFrame;
      holder.play();
    }
  }
}

så er det nemmeste at du i sidste frame i de swf'er der bliver hentet ind skriver:

_root.loadMC(nummer);

hvor "nummer" er nummeret på den bæste swf..
Avatar billede level75 Nybegynder
15. maj 2004 - 17:30 #3
hvad vil du så have. du vil have jeg skal ligge det der function loadMC ind i første frame på hoved scenen ik.

og så inde i de loadet movier skal jeg ligge det der script ind hvor der skal stå hvilket nummer den har? men jeg forstår ik det der _root.loadMC(nummer) som skal ligge i de loadet mc for, den skal jo kunne vide hvilken functions nummer den skal gå til ik.
Avatar billede level75 Nybegynder
15. maj 2004 - 20:56 #4
hey pyroman, vil du ik lige hjælpe mig her til sidst, jeg klokker stadigvæk i det.
Avatar billede pyroman Nybegynder
15. maj 2004 - 21:07 #5
Denne kode skal stå i din hovedfilms, første frame...

Når du vil hente en ny film ind i mc'et "holder", som bliver oprettet automatisk, så kalder du funktionen:

_root.loadMC(nummer);

"nummer" er et nummer på den swf, du vil hente - dvs. at dine swf-filer skal hedde "navn"+nummer+".swf", fx: film1.swf, film2.swf osv...
Du skal så angive "film" i stedet for "swfnavn" i denne linie: holder.loadMovie("swfnavn"+num+".swf");

så hvis du fra start gerne vil hente "film1.swf", så skriver du:

_root.loadMC(1);


I dine swf'er kan du i sidste frame skrive det samme, bare med nummeret på den næste film der skal hentes...
Avatar billede cociopimp Nybegynder
15. maj 2004 - 21:55 #6
hey jeg har fuldt meget med i jeres diskution. og har selv prøvet at lave efter det du har skrevet pyroman. men jeg har et problem når den skal streame preloader baren. jeg prøvet med.

var currentMC = 1;
function loadMC (num){
  _root.tommc.loadMovie("movie"+num+".swf");
  _root.tommc.pre._xscale = 0;
  this.onEnterFrame = function(){
    if(_root.tommc.getBytesLoaded() == _root.tommc.getBytesTotal() && _root.tommc.getBytesTotal > 1){
        _root.tommc.pre._xscale = myBytes*100;
        trace(myBytes);
      delete this.onEnterFrame;
      _root.tommc.play();
    }
  }
}


men sjovt nok virker det ik, hvad gør jeg galt :P hilsen cociopimp
Avatar billede cociopimp Nybegynder
15. maj 2004 - 22:05 #7
pyroman i need you help please
Avatar billede level75 Nybegynder
15. maj 2004 - 22:12 #8
Tak for svaret... Hvis du kan svare på "cociopimp" ekstra spørgsmål ville det også være en stor hjælp, det bugger også stadig mig lidt :)
Avatar billede level75 Nybegynder
15. maj 2004 - 22:13 #9
Her er point...
Avatar billede level75 Nybegynder
15. maj 2004 - 22:13 #10
...
Avatar billede pyroman Nybegynder
15. maj 2004 - 23:57 #11
Hov! Du var ikke ret god til at give point - nu tog du dem alle sammen selv. Du kunne heller ikke give mig dem, da jeg ikke havde lagt et svar endnu...
Så du må oprette et nyt spørgsmål med point...

svar på cociopimp:

din lille ændring på koden virker ikke først og fremmest fordi at du bruger en variabel "mBytes" som slet ikke eksisterer... og desuden står _xscale koden først efter if-koden som udløses når filmen ER hentet...
brug denne i stedet:

var currentMC = 1;
function loadMC (num){
  var bytesLoaded, bytesTotal, percent;
  _root.tommc.loadMovie("movie"+num+".swf");
  _root.tommc.pre._xscale = 0;

  this.onEnterFrame = function(){
    bytesLoaded = _root.tommc.getBytesLoaded();
    bytesTotal = _root.tommc.getBytesTotal();
    percent = Math.floor(bytesLoaded/bytesTotal*100);
    _root.tommc.pre._xscale = percent;
    if(bytesLoaded == bytesTotal && bytesTotal > 0){
      delete this.onEnterFrame;
      _root.tommc.play();
    }
  }
}

Og så vil det være en god ide at lægge preloader-baren i hovedfilmen - ellers vises den først efter at en smule af filmen den ligger i er hentet og ikke med det samme...
Avatar billede level75 Nybegynder
17. maj 2004 - 16:55 #12
skal nok lave et nyt spørgsmål pyroman det må du sgu undskylde :S

men inde i den swf som man loader ind, der kan du jo ik vide hvilken swf der skal spille næste gang. så kan man ik bare smække
_root.holder.loadMovie("movie"+num+".swf");
ind på sidste frame og så på buttonen skrive:

on(release){
_root.holder.loadMC(1);
play();
}
play for lige at den skal spille hen tiol den sidse frame?
Avatar billede level75 Nybegynder
17. maj 2004 - 18:49 #13
pyroman vil du have jeg skal lave et nyt spøgsmål nu så kan du svar ok ;)
Avatar billede bredker Nybegynder
17. maj 2004 - 19:05 #14
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