Avatar billede cont_manager Nybegynder
14. maj 2002 - 13:16 Der er 23 kommentarer og
1 løsning

preloader til ekstern .swf

Ja, overskriften siger sig selv.

Hvordan ser en preloader til en ekstern loadet .swf ud? Kan man overhovedet det? (Den skal helst vise procent loadet)

Min film kommer til frame 55, og først der loades der 5 eksterne .swf-filer. Det ville så være ideelt med en preloader som fortæller, at de er ved at blive loadet (og procent loadet).

CM_ (:
Avatar billede hoejrup Nybegynder
14. maj 2002 - 14:20 #1
Der er i hundredvis af procentloader på eksperten til flash, du skal bare søge på preloader.

/per
Avatar billede basicq Nybegynder
14. maj 2002 - 14:28 #2
Du laver 2 scener i den film som du loader i frame 55, Scene 1 lægger du din preloader i og så skriver du i koden i din preloader gotoAndPlay("scene2","");... scene2 lægger du din film i somskal preloades så virker det.....
Avatar billede mat Nybegynder
14. maj 2002 - 14:34 #3
Det kan være du kan finde en du kan bruge på Bokels common actionscripts:

http://www.bokelberg.de/actionscript/
Avatar billede basicq Nybegynder
14. maj 2002 - 14:47 #4
Den film du loader i frame 55 lave en ekstra scene i som du kalder preloader, den scene hvor din orginale film er i kalder du main.

scene "preloader" lægger du det her kode ind i.
--------------------preloader----------------
total_bytes = getBytesTotal();
loaded_bytes = getBytesLoaded();
remaining_bytes = total_bytes-loaded_bytes;
percent_done = int((loaded_bytes/total_bytes)*100);
ifFrameLoaded ("main", Antal frames i main movie) {
    gotoAndPlay("main", 1);
}
I næste keyframe i scene "prelaoder" skriver du gotoAndPlay(1);
Så skulle det være i orden. Gå nu tilbage til keyframe 1 i scene "preloader". der laver du 4 dynamiske tekstfelter, og kalder dem total_bytes, loaded_bytes, remaining_bytes og den sidste kalder du percent_done.

så skulle det spille...

zico.dk
Avatar billede baitianlong Nybegynder
14. maj 2002 - 16:00 #5
Hvis du loader dem ind ovenpå, dvs. med
loadMovieNum("film2.swf", 1);
loadMovieNum("film3.swf", 2);

Så kan du evt. gøre dette: Skrive stop() i første frame af de nye fem film og dette i den frame hvor de skal loades på et tomt movieclip:

onClipEvent(load) {
_root.stop();
loadMovieNum("film2.swf", 1);
loadMovieNum("film3.swf", 2);
...og så videre...
starttid=getTimer();
}
onClipEvent(enterFrame) {
to_Be_loaded=_level1.getBytesTotal()+_level2.getBytesTotal()...osv;
loaded_so_far=_level1.getBytesLoaded()+_level2.getBytesLoaded()...osv;
_root.procent=int((loaded_so_far/to_be_loaded)*100)+" % loaded";
_root.speed=(loaded_so_far/1024)/((getTimer()-starttid)/1000);
_root.time_left=int(((to_be_loaded-loaded_so_far)/1024)/_root.speed)+" seconds left";

  if(to_be_loaded<=loaded_so_far) {
  _level1.play();
  _level2.play();
  ...osv;
  }
}

Så opretter du to dyn. tekstfelter i denne frame i hovedfilmen og kalder dem: "procent" og "time_left"
Avatar billede cont_manager Nybegynder
14. maj 2002 - 22:25 #6
basicq-> jeg er ikke så interresseret i at der skal ligge kode i de eksterne swf's, da de genereres med php/Swift-generator/ming, men tak for kommentaren.

Post jeres svar:
Points til basicq, mat og legende.dk.
Pissegodt link, mat!
((-:
Avatar billede cont_manager Nybegynder
14. maj 2002 - 22:29 #7
Så vidt jeg kan se, så kan dette script klare sagerne (med lidt modifikationer):

frame 1:
loadMovie("myMovie1.swf","myTarget");
loadMovie("myMovie2.swf","myTarget");
loadMovie("myMovie3.swf","myTarget");
loadMovie("myMovie4.swf","myTarget");
loadMovie("myMovie5.swf","myTarget");

frame 2:
// nothing in here

frame 3:
actBytes = myTarget.getBytesLoaded() || 0;
totBytes = myTarget.getBytesTotal() || 100;
percent  = Math.round(actBytes * 100 / totBytes);

if( totBytes - actBytes > 10){
    // if you don't want a bar, delete the following line
    bar._xscale = percent;
    gotoAndPlay(2)
}

frame 4:
// ready, go
Avatar billede cont_manager Nybegynder
14. maj 2002 - 22:30 #8
Sådan?!
Avatar billede baitianlong Nybegynder
14. maj 2002 - 22:38 #9
Men i mit script får man at vide hvor lang tid der er tilbage (hæ hæ)
Avatar billede cont_manager Nybegynder
14. maj 2002 - 23:41 #10
Ja, jeg kan da også godt se (efter et nærmere kig) at dit script er stort set det samme. Det skal bare sidde på et MC. Hvordan placerer den loadede swf sig iøvrigt i det tomme MC?
Avatar billede cont_manager Nybegynder
14. maj 2002 - 23:42 #11
Jeg kan vel også bare sætte en getTimer() ind i sidstnævnte script?
Avatar billede cont_manager Nybegynder
16. maj 2002 - 10:51 #12
Hvis du vil have point legende.dk - så må du altså lige hjælpe mig færdigt med dit script, som jeg bedst har kunnet bruge.
Avatar billede baitianlong Nybegynder
16. maj 2002 - 15:07 #13
OK, hvad skal du bruge ?
Avatar billede cont_manager Nybegynder
16. maj 2002 - 19:39 #14
Du loader (så vidt jeg kan forstår det) filerne ind i forskellige levels. Mine filer er blot billeder, som derfor ikke behøver en stop() eller play().
Men hvordan kalder jeg så filerne ind i de relevante MC'er? De skal ind i hver sit MC.
Avatar billede baitianlong Nybegynder
16. maj 2002 - 20:44 #15
Hvis du bare vil have nogle billeder ind i nogle movieclips, hvorfor så alt den "roden rundt" ?

Hvad vil du opnå ? Skal man kunne uploade nye billeder, og så bruges de i flashen derefter ?
Avatar billede cont_manager Nybegynder
16. maj 2002 - 22:28 #16
Det er vel nærmest det omvendte af "roden rundt", fordi - netop som du skriver - det er et dynamisk system hvor man kan uploade nye billeder. Det er faktisk ganske enkelt, men så igen... det virker jo ikke endnu (ihvertfald preloaderen). Og det SKAL være Flash 5.
Avatar billede cont_manager Nybegynder
16. maj 2002 - 22:31 #17
Men hvis du ved hvordan jeg udfører en getBytesLoaded() og getBytesTotal() på de swf's som loades, så har du svaret.
Avatar billede baitianlong Nybegynder
16. maj 2002 - 22:47 #18
Nå ok.

Du skal kalde dem på target i stedet for filnavn.

Eks:

loadMovie("film.swf", "movieclipnavn");
var1 = movieclipnavn.getBytesLoaded()
var2 = movieclipnavn.getBytesTotal()
Avatar billede baitianlong Nybegynder
16. maj 2002 - 22:48 #19
Hvis dine movieclips ligger indeni hinanden:

var1 = _root.yderste_mc.inderste_mc.allerinderste_mc.getBytesLoaded()
Avatar billede cont_manager Nybegynder
16. maj 2002 - 23:36 #20
Det kan jeg ikke få til at virke?! (Har prøvet næsten alt)
Der ligger et andet stykke grafik i "movieclipnavn" - og det er tilsyneladende det og kun det som læses af getBytesLoaded()+Total().
Preloaderen siger 100% før de eksterne er loadet.
Avatar billede cont_manager Nybegynder
16. maj 2002 - 23:37 #21
-> Hov, det du siger med "Hvis dine movieclips ligger indeni hinanden:" - betyder det at movieclipnavn.getBytesLoaded() kun virker i main timeline.
Avatar billede baitianlong Nybegynder
17. maj 2002 - 00:29 #22
Nej, men så er du måske mere sikker på stien.

Prøv det. Jeg har på fornemmelsen at du skyder forbi. Jeg kiggede lige på det script der var link til højere oppe. Og det er jo glimrende til dit ønske. Der står hele koden i _root tidslinien, og kaldene er derfor direkte til navnene på movieclips'ne. Jeg kan godt lide mc-scripts, og foreslog derfor et script på et movieclip. Hvis du blot ændrer mit en smule er det glimrende...

onClipEvent(load) {
_root.stop();
loadMovieNum("film2.swf", _root.target1);
loadMovieNum("film3.swf", _root.target2);
//...og så videre... Dine movieclips skal så hedde target1 osv (i hovedfilmen)
starttid=getTimer();
}
onClipEvent(enterFrame) {
to_Be_loaded=_root.target1.getBytesTotal()+_root.target2.getBytesTotal()...osv;
loaded_so_far=_root.target1.getBytesLoaded()+_root.target2.getBytesLoaded()...osv;
_root.procent=int((loaded_so_far/to_be_loaded)*100)+" % loaded";
_root.speed=(loaded_so_far/1024)/((getTimer()-starttid)/1000);
_root.time_left=int(((to_be_loaded-loaded_so_far)/1024)/_root.speed)+" seconds left";

  if(to_be_loaded<=loaded_so_far) {
  _root.target1.play(); //filmene er læst ind og startes
  _root.target2.play();
  //...osv ..
  }
}

Du skal huske at lave en tom frame i starten af de nye film, hvor der står stop();
så filmen venter med at køre til alle filmene er læst ind. Ideen her er jo at jeg samler alle filstørrelserne i en og regner på den.

Lav et tomt movieclip (eller bare tegn en lille firkant i). Træk dette mc ind i hovedfilmen (evt. udenfor scenen) i den KEYframe hvor filmene skal loades
og giv ovenstående actionscript.

Du får så i roden af filmen (hovedtidslinien) variablerne procent, speed og time_left
Dem kan du skrive i dynamiske tekstfelter (stadig i roden)

Håber det virker nu  /o;
Avatar billede baitianlong Nybegynder
17. maj 2002 - 00:53 #23
Avatar billede cont_manager Nybegynder
17. maj 2002 - 01:21 #24
Ha ha ha....... fed demo!! Der fik jeg salsa for fuld styrke (sad med hørebøffer på)!!! Jeg arbejder desværre først videre med det lørdag... Men mange tak.
Du får lige dine points.
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