Avatar billede sako Nybegynder
20. december 2003 - 18:56 Der er 15 kommentarer og
1 løsning

Viser baggrundsfarve i et splitsekund

Jeg har defineret min baggrundsfarve via en MC på følgende måde
baggrund.onEnterFrame = function(){
myColorObject = new Color(_root.baggrund);
myColorObject.setRGB(_root.farve);
}
Hvor variablen farve bliver hentet fra en database - det virker perfekt - men når jeg loader min fil i browseren - visen en en sort baggrund i et splitsekund - hvorefter den rigtige kommer - kan man ikke undgå det ??
Avatar billede _k Nybegynder
20. december 2003 - 19:26 #1
Først og fremmes, bør du nok bruge en baggrund.onLoad i stedet for baggrund.onEnterFrame - ellers kører du et unødvendigt loop der hele tiden opdaterer baggrunden til det samme!

Det du oplever som et splitsekund i din egen Flashplayer, kommer til at tage noget længere tid for dine webbesøgende. Du må tænke på, at hvis du vil sætte baggrundsfarven i en fil (asp/php?) som du henter ind, skal filen jo rent fysisk nå frem til Flash inden bagrundsfarven kan sættes.

En løsning kunne være, at du først starter din film når baggrunden er sat. Og altså inden da, viser et eller anden preloaderskærmbillede.
Avatar billede sako Nybegynder
21. december 2003 - 00:28 #2
Nu er jeg ikke specielt god til flash - men den looper vil ikke hvis der kun bruges en frame ??  - angående det med at hente fra en fil - bør det vel ikke have den stor betydning - da det sker temligt hurtigt..
Avatar billede _k Nybegynder
21. december 2003 - 14:44 #3
Selvom Flash står "stille" på en frame, loopes denne frame i det uendelige. Der har kæmpe fordele når man laver dynamiske animationer. Du kan selv tjekke det i din Flashplayer ved at putte denne kode på tidslinjen:

this.onEnterFrame = function() {
  trace("Nu er filmen loopet: " + x + "antal gange");
  x++;
}

Nu fungerer internettet jo ikke altid optimalt. Nogle HAR faktisk stadigvæk urimeligt langsomme forbindelse - og os der ikke har, men som deler linjen ud af huset med andre, oplever også engang imellem meget store delay fordi fil-delingstjenester og online spil er blevet så store hit. Det du derfor oplever på din egen maskine som "temlig hurtigt", tager for andre syv lange og syv bredde. Sammenlagt med, at Flash lige skal have hentet det meste af den aktuelle swf ind i browserens cache før den begynder at kigge sig om efter evt. andre filer, betyder at du godt kan regne med at alle dine brugere oplever et delay - en anden baggrundsfarve - af varierende længde.
Det kan du enten acceptere og gøre noget ved, eller slå hen som: "det gider jeg ikke gøre noget ved!". Lidt lige som tidligere års hjemmesider, der altid var "under udvikling" :o)
Avatar billede sako Nybegynder
21. december 2003 - 14:54 #4
ok - man skal jo lære hver dag - men du får ikke dine point endnu :-)
Hvis jeg bruger onLoad virker det nemlig ikke.. så snart jeg skifter den tilbage til OnEnterFrame - virker det igen??
Avatar billede mat Nybegynder
21. december 2003 - 15:21 #5
Du skal udløse onLoad():

baggrund.onLoad = function(){
myColorObject = new Color(_root.baggrund);
myColorObject.setRGB(_root.farve);
}

baggrund.onLoad();

-mat
Avatar billede sako Nybegynder
21. december 2003 - 15:29 #6
hmm - det havde jeg også gjort - den viser bare en sort baggrund...
Avatar billede mat Nybegynder
21. december 2003 - 16:11 #7
hvordan definerer du "farve"?
Avatar billede sako Nybegynder
21. december 2003 - 16:15 #8
henter den fra php med:
loadVariables("info.php","_root");

hvor f.eks farve=0xFF0000
Avatar billede _k Nybegynder
21. december 2003 - 16:35 #9
... så når dit php-dokument ikke at blive loadet ind før du kalder onLoad - faktisk et godt eksempel på, at koden koden ikke har hvad den skal bruge før den eksekveres.
Hvis du vil bruge loadVariables (har du MX eller derover, vil jeg anbefale loadVars objektet i stedet!), kan du klare den med en onClipEvent(data). Load ind i et mc i stedet for i _root.

loadVariables("info.php","mc");

På dit mc sætter du koden:
onClipEvent(data) {
  myColorObject = new Color(_root.baggrund);
  myColorObject.setRGB(_root.farve);
}

onClipEvent(data) bliver eksekveret, når noget loades ind i mc'et.
Avatar billede sako Nybegynder
21. december 2003 - 16:39 #10
hmm det kræver bare en masse omprogrammering af de andre ting - men hvis det er løsninger er der self ingen vej uden om - forstår bare ikke følgende..

loadVariables("info.php","_root");
baggrund.onEnterframe=function(){
myColorObject = new Color(_root.baggrund);
myColorObject.setRGB(_root.farve);
}
virker fint....men loop'er baggrunden en masse gange

men
loadVariables("info.php","_root");
baggrund.onLoad=function(){
myColorObject = new Color(_root.baggrund);
myColorObject.setRGB(_root.farve);
}
baggrund.onLoad();

Virker ikke - den burde vil have informationer til at udføre functionen ??
Avatar billede _k Nybegynder
21. december 2003 - 17:00 #11
I første eksempel står din kode hele tiden og siger: sæt farven, sæt farven, sæt farve... - de første mange gange uden at kunne gøre det, fordi der ikke er nogen som har fortalt den hvad farven er (_root.farve er simpelthen ikke blevet sat, fordi php'en ikke er hentet)

I anden eksempel siger koden: sæt farven. En og kun en gang. Men eftersom den heller ikke her ved hvad farven skal være, går den kold og gør ingenting. Derfor kan vi tvinge den til at vente med at blive eksekveret til farven er blevet sat (med onClipEvent(data)).
Principielt kan du også bare vente med at sætte onLoad til frame 100 og håbe på at php'en er hentet når playheaded når frem - men du kan aldrig være sikker - viva los internet ;o)
Avatar billede sako Nybegynder
21. december 2003 - 17:07 #12
hmmm må vist hellere lukke - kan ikke få det til at virke - du får lige dine point her _k
Avatar billede _k Nybegynder
21. december 2003 - 17:24 #13
mange tak. Har du tænkt dig at være seriøs med Flash, er det en vigtig ting at sætte sig ind i, så leg videre - og du kan jo altid spørge løs her i kategori 20 :o)
Avatar billede sako Nybegynder
21. december 2003 - 17:28 #14
Det er ikke så meget med at være seriøs - tror måske bare ikke jeg har kunnet forklare problemet ordenligt......
Avatar billede mat Nybegynder
21. december 2003 - 17:58 #15
Brug dog LoadVars og sæt farven i dens onload event-handler:

l = new LoadVars();
l.onLoad = function(s) {
if (s) {
myColorObject = new Color(_root.baggrund);
myColorObject.setRGB(this.farve);
}
}
l.load("info.php");
Avatar billede sako Nybegynder
21. december 2003 - 18:11 #16
sorry havde ikke set den i 21/12-2003 16:35:10 - virker selvfølgelig perfekt - tak for hjælpen/tålmodigheden
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