Det der er galt her er selvfølgelig at resultatet er nul hele tiden !! Jeg skal have den til at holde loadedbyte1 indtil sluttid=starttid .!?!!#?! -eller noget !?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hmmm bare et hurtigt bud, men hvis du rykker starttid=getTimer(); op så det står inde i if sætningen, så bliver starttiden først sat påny når if sætningen er opfyldt...
Der er også lige det problem, at starttid er defineret kun med getTimer(); Dvs. første gang bliver starttid = 0; men efterfølgende vil start tid være et eller andet over 1000 (ex. 1014) da getTimer() regner i millisekunder.
Det er kun hvert sekund speed skal opdateres ikke? Hvis du istedet definerer starttid til int(getTimer()/1000) så vil starttid altid være et heltal, et fortløbende antal sekunder. Så burde du kunne skrive flg.:
Når der så er gået ét sekund er start- og sluttid ens, de to loadedbytes bliver sammenholdt og du opdaterer speed, derefter defineres starttid igen til 1, sluttid til 2, når der er gået et sekund til... you get the picture :0)
Ved ikke helt, har ikke testet det men det burde vel fungere. Prøv det af og meld tilbage :0)
loadedbyte1 bliver sat ved hver enterFrame. Dvs. den bliver også sat umiddelbart if sætningen er true, hvormed der ikke rigtig er nogen forskel på loadedbyte1 og 2... de bliver jo sat lige efter hinanden. Så må du næsten have to timers på der opererer hvert sekund, og gemmer hver bytes variabel så der præcist er gået et sekund imellem den ene og den anden bliver fastsat.
Så bliver loadedbyte1 sat til at begynde med, og derefter hver gang speed er sat. Så går der et sekund, de to bytes variabler bliver sammenholdt, og er nu forskellige med ét sekund.
Du skriver kbps, men output er i bytes, ikke kilobytes. Du må enten definere loadedbyte1(og 2) som getBytesLoaded()/1000 hvor du har decimaler, eller som int(getBytesLoaded()/1000) i rene kb...
Det kører ikke helt. Den skriver bare nul hele tiden. Men det skal siges at den flash efterhånden er lidt rodet, så måske er det mig. Jeg har et mc med det dynamiske tekstfelt i, og jeg har onClipEvent koden på dette mc i hovedfilmen. Den er lidt skummel - Måske var det bedre som frameaction i hovedfilmen, det prøvede jeg først, men gik kold. Men jeg tror det er nemmere. Tre frames med tekstfeltet i hvor frame 1 siger nogle variabler, frame 2 afvikler dem og frame 3 ændrer variablerne og goto'er til 2
Den står i to frames der i forvejen looper pga. if (getBytesLoaded()<getBytesTotal()) {gotoAndPlay (den frame lige før !)} Måske laver den onload hver gang den springer tilbage til første frame af de to !?
Men jeg kan glæde dig (og især mig selv) med at den der med at ændre variabler fra den ene til den anden film nu er på plads. Så der får du lige pointsne, og mange tak (o;
Men denne burde da også virke efter hensigten nu?! Uanset om du laver frame eller clipEvent loop (de er lige hurtige)... kan du evt. sende filen til mig?
Til dig, og eventuelle andre, der måtte klikke på linket... Jeg ved godt det er verdens grimmeste eksplosion, der er i spillet, og jeg skifter den snarligt ud. Undskyld for eventuelle mavesmerter (o;
Jeg fatter det jo ikke... getBytesLoaded(); fungerer ikke i en enterFrame! Den bliver sat én gang and thats it! Hvis man istedet sætter det på et frame loop som du selv foreslog, så er alt godt!
Jeg har indtil nu kun testet på min egen, og der fungerer det så helt fint. Har ikke kastet mig over din endnu, men hvad med jeg skriver frame scriptet her, så kan du selv forsøge at påføre det? Hvis det så ikke virker tager jeg et mere grundigt på din fil...
Der går jo altid et stykke tid før man fatter en andens fil helt.
Det er rigtigt, og for 30 points skal du ikke rode rundt i mine sære placeringer af scripts. Men det er jo også blot tre frames i preloader-scenen... Men skriv dem endelig her, ellers kan du maile mig flashen tilbage, med scriptet i, på j@legende.dk.
Jeg har jo "if pro<100 goto 2" i frame "3" som du ved, men med din kode i frame 1+2, og ingen ændringer i frame 3 (den går jo alligevel til "2"), skriver den nul hele tiden
Noget jeg ikke forstår er at når man tester movie (for at streame) virker det kun første gang !!! Anden gang man starter den, hvis man f.eks rewinder, er det tekstfelt væk !?!
Nej da? Med mindre tekstfeltet er i et andet mc...
Det er også meget vigtigt at variablerne i det første frame script bliver sat for sig selv, i en frame hvor du ikke kommer tilbage til! Ellers bliver sluttid = 1 hele tiden, byte er true og så går det galt...
Jeg uploader i øvrigt altid løbende istedet for at teste med stream, så problemer der ved jeg ikke så meget om...
Jeg fylder altid mine filer med ubrugeligt bras der bare fylder, får de andre i huset til at hente mere end de plejer og lignende... Det virker bare mere 'rigtigt' for mig at teste under sådanne forhold.
Jeg har lavet tekstfeltet speed i hovedfilmen/preloaderen, og så puttet objectaction'en på et lille mc udenfor scenen, det duer sgu ikke rigtig, jeg fatter ikke hvorfor.
if (loadedbyte == totalbyte) { _root.gotoAndStop("saadan"); }
da den jo looper via procent testen indtil pro=100 Men der er slet intet tekstfelt med den (speed) i !?! (Jeg har tjekket at farven ikke er sort og lign. (o; ) Det er mystisk !!
Kan jeg ikke lokke dig til at putte det på min fil (det er jo kun den lille ting) og sende den til mig (((((((o;
En meget simpel måde ville være at indsætte stop() i den første frame på hovedtidslinien og derefter vedhæfte følgende til et tomt movie clip i samme frame:
onClipEvent(enterFrame) { var total = _root.getBytesTotal()/1024; }
onClipEvent(enterFrame) { var loaded = _root.getBytesLoaded()/1024; var time = getTimer()/1000; _root.vel = loaded/time; if(loaded == total) { // vis resten af filen } }
For at vise den gennemsnitlige hastighed skal der så oprettes et tekstfelt på hovedtidslinien med navnet vel.
Dog er det vel at foretrække at få hastigheden til den nuværende tid i stedet for at få den gennemsnitlige hastighed (hvis man f.eks. har haft en meget langsom forbindelse i starten, men senere stiger meget, så vil det ikke afspejle sig i nær samme grad).
Matematisk set ville vi gøre det ved at opstille den hentede mængde som funktion af tiden, hvorefter vi kan differentiere og få den øjeblikkelige hastighed.
Dette kan vi dog ikke gøre her, da vi ganske enkelt ikke kan opstille nogen funktion. I stedet kan vi måle den hentede mængde mellem to frames, og da vi også har tiden mellem disse, så får vi en tilnærmelse til den øjeblikkelige hastighed. Jeg er imidlertid for træt til at skrive koden til dette, så det må vente :)
Sådan har jeg det også, når jeg har mulighed for det, men i morgen skal jeg møde kl 6.30 , så jeg skal vist i coma nu !!
Jeg glæder mig til det er i hus, det er da en fed detalje, meget informativ !
Jeg har ikke helt styr på hvordan de object actions bliver afviklet i denne sammenhæng. Hvis procent sender den tilbage til "frame 1" (som er en keyframe), kører den så on(load) igen ? og hvis jeg sender den til "frame 2" kører den vel on(enterFrame) igen ?
Nice indskud Morten! Som altid kan du vise koden i minimal, men funktionel form. Det tager jeg hatten af for!
Legende-> mht load og enterFrame, hvis du har et loop mellem to frames og et instance at mc'et med koden i hver, så vil begge koder blive udført i hver frame! Det er jo ikke meningen, men som du har lavet det strækker mc'et sig over to frames, og load bliver kun udført én gang, enterFrame i hver frame.
Well, jeg lavede det som frame script alligevel, du looper jo mellem frames i forvejen. På dem måde ligger tekstfeltet speed i samme keyframe og layer som de andre. Det er nemmere for overskuelighedens skyld. Derudover har jeg påsat de forskellige stykker kode som framescript i dit speed layer, lige til at gå til. Den er nu sendt afsted i zippet form. Håber du nu får det hele til at virke :0)
Prøv evt. Mortens idé af, jeg har endnu ikke selv forsøgt.
Meget forklarende og meningsfyldt, jeg er dybdt imponeret over dine reflektioner. Jeg må sige det giver mig inspiration til at få læst op på alt det matematiske!
Efter at have set dine (absolut ikke) simple filer - også på levitated.net - så får jeg lyst til at kunne gøre lignende :0)
Det kunne også være interessant at lave en lille tilføjelse til ovenstående kode, hvor vi beregner den resterende tid. Vi har hastigheden og kan let beregne den resterende mængde, så det er forholdsvis let at få tiden:
onClipEvent(enterFrame) { var total = _root.getBytesTotal()/1024; }
onClipEvent(enterFrame) { var loaded = _root.getBytesLoaded()/1024; var time = getTimer()/1000; _root.vel = loaded/time; _root.timeLeft = (total-loaded)/_root.vel; if(loaded == total) { // vis resten af filen } }
Mange tak for hjælpen og mailen. Det er langt mere værd end 30 points alt det du har lavet her !!! Men jeg tror egentlig ikke du er specielt interesseret i points'ne. Flinker fyr.
Du skal dog lige svare og have dem alligevel (o;
Når jeg streamer den i flash, er feltet ikke med. Det tror jeg er fordi du sætter nogle faktorer i frame 1, og når man streamer rewinder den bare (ikke reloader), så jeg flytter din definitionsframe hen lige før loopet !!!! -Men alt virker fint.
Det er virkelig blevet herligt at se på Legende! Lækker mambo musik :0)
Det var godt du fik rettet lidt i det, fik bytes til kb og lignende. Jeg sad og rodede lidt rundt i din fil igår, og du har efterhånden samlet en del goodies i den må man sige. Herligt lille site !
Der er lige én ting jeg vil foreslå dig, istedet for dine frame scripts er placeret på de layers der måske passer til, så er det betydeligt mere overskueligt hvis du har ét layer kun til scripts (og måske frame labels). Sådan et har jeg altid, det giver større overblik og det er nemmere at finde pågældende steder i filmen.
Hvis I kigger på http://hhbk.subnet.dk/loadVel.html , så vises hastigheden (stadigvæk gennemsnittet, fordi jeg ikke har taget mig sammen til at gøre det mere præcist) med 2 decimaler, og desuden er der den resterende tid i sekunder neden under (hvis det har nogen interesse) :)
Det er lidt rodet, for jeg laver selv mest framescript, og kan jo ikke så mange tricks endnu, selv om jeg synes det går rimeligt hurtigt. For et par måneder siden var mit vildeste ationscript on(release) {play()}; HA Ha -det er ingengang løgn.
Men du og Barklund har virkelig givet mig meget, selv om han kun gi'r scripts'ne og du giver hjælp, mail m.v.
Hyg dig til næste spørgsmål dukker op fra legende (og tak for den fine kritik)
Min film på ultimate er opbygget med stjerneswf i level 0, preloader i scene 1 og menu i scene 2 af menuswf i level 2, Spillet er i level1 (og der kommer de andre menupunkter også !)
Tænkte bare på det, fordi jeg skal lave en mp3-afspiller for en kunde (der skal være de samme funktioner som på http://www.podlob.com - nr. 49 under Flash Research) :)
Gotcha. Prøv lige min mambogenerator. Med hensyn til musik. http://www.legende.dk/mambo . Den fylder kun meget lidt i betragtning af hvor "meget" musik, der er i. Og kvaliteten af musikken er langt bedre end i det link du skrev !!
Kvaliteten af musikken på linket er sådan set irrelevant, idet at filerne skal hentes dynamisk vha. XML (kunden skal selv kunne tilføje numre vha. denne fil), og din fil indeholder desværre ikke de samme funktioner...
Men her er problemet, det modsatte af morten/gotcha's gennemsnits hastighed. Timeleft farer op og ned i takt med download hastigheden... Man skal nok have hastigheden defineret hver frame, men timeleft skal baseres på den gennemsnitlige hastighed.
-Den gæve kombiløsning (den må jeg lige prøve at brygge sammen i 1 action) ((O;
P.S. til Paask>> Send mig gerne din "tepotte"-film, så jeg kan se på det med frameraten j@legende.dk
Jeg har lige sendt filen. Har desværre ikke lige tid til at se på din kode... måske senere :0)
Synes godt om
Ny brugerNybegynder
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.