Toon posts:

[FlashMX] Preloader probleem(weer 1 ja!)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Doel: :?
Een preloader die direct start zodra je het filmpje probeert te bekijken, en waarin je ziet wat de laadstatus is.

Probleem: :?
De preloader begint niet, of veel te laat met laden.
Ik heb bijv een stukje film van 5mb, en die moet gewoon geladen worden.
Maar de preloader begint pas als je op ongeveer 4,99 mb zit :'(

Kansloze pogingen::?
zelf gedaan:
  • Check voor laden.. door naar frame2, nog niet klaar terug naar 1 wel klaar door naar frame 3
  • In de 1e scene checken of de 2e al geladen is
  • Met de ene .swf van een paar kb een externe laden.
Sites bekeken:
  • flash.pagina.nl
  • flashkit
  • where here forum
  • got.tweakers (natuurlijk :) )
  • macromedia zelf
  • en nog een aantal van die varianten.
Dit is niet een vraag van: "geef mij eens een werkende preloader".
Die heb ik namelijk al zat gezien/gedownload, maar allen die ik maak geeft dus hetzelfde probleem
ze "preloaden" niet zoals het moet!!
Weet iemand hier mij een fantastische tip te geven -na de bovenstaande text gelezen te hebben- wat er wellicht fout zou zijn gegaan ?

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 05-05 12:14
post anders je .fla eens zodat er mensen naar je code kunnen kijken
dat is heel wat makkelijker dan een beschrijving

Icons are overrated


Verwijderd

Topicstarter
helmet hier komt ie:

de laadde te snel dus heb ik m op 50% ook even laten checken
deze gaat kijken of het percentage al 50% is of meer, zo ja dan geeft hij een melding met een knop om verder te gaan.
na het klikken van die knop moet hij de rest van de film laden en beginnen met spelen.


Deze code ben ik tegen gekomen van een andere tweaker, maar begon ook pas toen het filmpje al compleet geladen was.
Deze bestaat uit 2 scene's en hier laad scene1 dus... kijk hoe groot alles is.. hoe lang hij al bezig is, en geeft dan een tijd hoe lang nog.
zodra klaar met laden moet hij naar scene 2!

LET OP: ik heb express niets groots in de frames gezet om de download voor jullie sneller te maken....

[ Voor 37% gewijzigd door Verwijderd op 02-09-2003 23:25 . Reden: Seraph mooie site b.t.w. ]


Verwijderd

Kun je een voorbeeldje online zetten van wat je nu hebt? .fla of een beschrijving van de frames/code?

[ Voor 35% gewijzigd door Verwijderd op 02-09-2003 21:55 ]


Verwijderd

Topicstarter
Ik heb net gelezen dat tijdens het vieuwen van je movie(CTRL+enter) je geen preloader kon zien omdat hij hem direct van je hardeschijf af lees.
Maar als je dan nog eens CTRL+enter drukt dan zet flash de 56k modus aan en zie je dus wel een preloader(als het goed is)
Scheelt in ieder geval weer een hoop uploaden voor de gene die dit lezen!

  • ixi
  • Registratie: December 2001
  • Laatst online: 17-05 17:12

ixi

Check voor de zekerheid even Publish Settings. Onder tabblad Flash moet je even kijken of Load Order wel op Bottom Up staat. Als hij op Top Down staat begint hij met de laatste frames, wat je dus niet wilt hebben.

Verwijderd

Topicstarter
Ik ben nog eens lekker doorgegaan met proberen, en het vreemde is... als je in flash 2x op CTRL+ENTER drukt, dan zie ik netjes een preloader. :)
Maar zodra ik hem online zet en dan probeer te laden, dan zie je in je statusbalk "bezig met downloaden" en zodra hij binnen is begint hij met spelen. :(
Terwijl ik niet de keuze heb gekregen downloaden/opslaan! dus dit doet ie uit zichzelf.
Zou de server misschien ook schuldig kunnen zijn aan een falende preloader?? :?

Verwijderd

Verwijderd schreef op 04 September 2003 @ 15:22:
Ik ben nog eens lekker doorgegaan met proberen, en het vreemde is... als je in flash 2x op CTRL+ENTER drukt, dan zie ik netjes een preloader. :)
Druk 1x op CTRL+ENTER en ga naar View -> Show Streaming
Dan weet je in ieder geval wat hij doet.

Over dat "bezig met downloaden": Je bekijkt heb toch wel in html he?
Puur alleen de .swf bekijken is nooit aan te raden.

Verder kan ik je voor een perfecte preloader tut verwijzen naar:
http://www.flashfocus.nl/ShowDetail.asp?NewsId=5174

(Voortaan eerst op Flashfocus (voorheen flashfreaks) kijken he ;) )

[ Voor 11% gewijzigd door Verwijderd op 04-09-2003 21:42 ]


Verwijderd

Ik heb dus nu precies hetzelfde, ik heb 10 scenes, gemaakt, was nodig om de zaak overzichtelijk te houden.
Daarin hier en daar een filmpje, geluidje, plaatje, etc.
De 1e scene is mijn preloader met dit script:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
st = new Date();
startSec = st.getSeconds();
startMin = st.getMinutes();
startHour = st.getHours();
startDay = st.getDay();

onEnterFrame = function(){

startbut._visible = false;
statics.bar._xscale = 0;

    nt = new Date();
    sec = nt.getSeconds() - startSec;
    min = nt.getMinutes() - startMin;
    hour = nt.getHours()- startHour;
    day = nt.getDay() - startDay;
    
    statics.totalbytes = getBytesTotal();
    statics.loadedbytes = getBytesLoaded();

    statics.percent = int(statics.loadedbytes/statics.totalbytes*100)+"%";
    statics.bar._xscale = int(statics.loadedbytes/statics.totalbytes*100);

    lsec = (day*24*60*60) + (hour*60*60) + (min*60) + sec;
    statics.timeelapsed = lsec + " sec elapsed";

    speedkb = Math.round((statics.loadedbytes/lsec)*10/1024)/10;
    statics.speed = speedkb + " kb/s";

    nkb = statics.totalbytes - statics.loadedbytes;

    nsec = Math.round(nkb/speedkb);
    statics.timetogo = nsec + " sec remaining";

if (statics.percent=="100%") 
 {
  startbut._visible = true;
 }

}

    
stop();


Alles werkt wel, maar de preloader pagina is pas te zien, er is uberhaupt pas iets te zien, als bijna de gehele file geladen is...

is iemand er al uit hoe dit fout zit!?

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
a) scenes zijn evil (ze bestaan eigenlijk niet eens in de swf) gebruik gewoon multiple fla met authortime sharing
b) een deftige preloader doe je door een main fla een andere te laten laden (ie: swf1 laat swf2. zo heb je nooit problemen, en hoef je het ook maar 1 maal te schrijven ;) (per frame per second ofcoz ;). ) Dit had je al geprobeert maar ik zie niet in waarom je der niet verder mee gaat? (breekt je _root code - ook nooit _root gebruiken)
c) nooit onEnterframe gebruiken voor een preloader - veel te veel bugs mee gemoeit: altijd setInterval gebruiken. (
d) je code is helemaal scope"less" ie waar staat het - temp vars heb je niet etc.
e) Date() voor een preloader? i think not!
f) je eerste frame bevat toch ALLEEN maar die code en start_but en statics.bar ? ..


maar setInterval is mij de juiste oplossing hier.

Verwijderd

Zoals je zegt, 2 swf's ook al geprobeerd, in swf 1 zat een knop die swf 2 opriep en liet zien, dan zelfde probleem

als ik m'n huidige fla in test movie met bandwidth profiler aan doe, dan zegt ie dat m'n eerste scene (preloader) de grootste is, terwijl alle data pas later, in andere scene's, aan bod komt, het rara is daarnaast ook dat als ik alleen de preloader scene test dan is ie wel klein..

add: oh ja, het script staat gewoon in Frame 1 van Layer Script

[ Voor 14% gewijzigd door Verwijderd op 17-12-2003 14:48 ]


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
Verwijderd schreef op 17 december 2003 @ 14:45:
Zoals je zegt, 2 swf's ook al geprobeerd, in swf 1 zat een knop die swf 2 opriep en liet zien, dan zelfde probleem
nog wat

a) bandwidth profiler werkt langs geen kanten dus nooit op vertrouwen.
CRTL+ENTER is niet jouw vriend als het gaat om echt testen/profilen (prefect voor simpele gevallen)

b) wat bedoel je met een knop die de tweede opriep

wat je in eertse hebt staan is zoiets als

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//eerste fla
_global.onPreload = function()
{
    //calc values here with whatever ;) 
//getTimer is toch wat handiger dan dat date gedoe + accurater

      if (100% > 0) {clearinterval(); _global.actual_mc.play(); }
}

_global.actual_mc = this.aMC.loadMovie(...); 
//aMC is bijvoorbeeld een dummy mc op plek (0,0);

setInterval(.... _global.onPreload);

stop();


//tweede fla

alleen een stop() in je eerste frame 
(zodat ie niet begitn te spelen "on the go").


tis pseudo code maar dit werkt toch eht met alles
(components, euh nou ja met fonts beetje oppassen ;), video)...

[ Voor 4% gewijzigd door hobbit_be op 17-12-2003 14:55 . Reden: fit the page ]


Verwijderd

maar hoe kun je in de eerste fla de
_level1.getBytesTotal(); en
_level1.getBytesLoaded();
opvragen....oftewel, hoe plak ik waar nu _level1 staat iets van start.swf ?!

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
hmm je bedoelt dat je per level gaat preloaden?

dat weet ik niet vanwege het feit dat ik nooit scenes gebruik ;) (en weeral een reden bij dus ;)

Sorry daarvoor. De preloader techniek die ik liet zien is gewoon voor een andere swf binnen te halen. zou het eigenlijk niet weten hoe je per level zou moeten preloaden als deze al in 1 swf zitten.

Verwijderd

nee nee, ik werk in prinicipe niet met levels, dat was een oud script, maar hoe pas jij het
.........getBytesLoaded(); principe toe op een ander swf file, als het binnen 1 swf is zou ik this gebruiken of niks ervoor zelfs, maar hoe verwijs je naar een ander swf file? dat moet jij toch ook gebruikt hebben als je 2 swf files gebruikt?

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
mocht je toch scenes gaan gebruiken als je Test Scene doet maakt ie een Swf van die scene op je hd die kun je dan wel gaan sequentieel preloaden ;)

een exteren swf is niets anders dan wat je zou doen als je een jpg inlaad.

dus:

_global.thedude = this.aMC.loadMovie("therealmovie.swf");

this (== _root als je script er staat). aMC is een lege MC maar wel op plek 0,0 (waar dus je echte movie komt te staan).

nu gaat flash gewoon door en laat ie die swf zien zodra ie kan (je kan dus die aMC best effe op visible 0 zetten)

dus die _global.thedude heeft ook getBytes()...

hoeweten wat die zijn?

door die op te vragen in een interval (zie previous of google effe).

uiteindelijk wordt je nieuwe swf dus geladen in layer: _level0.aMC. dus mag die exteren zekere geen "_root" gebruiken (zowieso al slecht idee).

als je dan devolgende wil doe je het hele spul opnieuw maar met een andere filename.

als je "therealmovie.swf" veranderd door "hello.jpg" werkt het ook. preloaders op deze manier zijn gewoon "wachters" of streaming data (bij noemt het StreamTracker ;).

Verwijderd

je bedoelt vast dit deel:

setInterval(.... _global.onPreload);


_global.file=this.targ.loadMovie("start.swf");
....
statics.totalbytes = _global.file.getBytesTotal();

maar wat moet er dan in die setInterval... want nu blijft getbytes leeg

[ Voor 5% gewijzigd door Verwijderd op 17-12-2003 15:52 ]


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
nou als je dat wil weten open dan even je manual? staat allemaal lekker uitgelegd. Wel gek vind ik dat op je zoektocht geen preloader vind met deze "techniek" - is toch erug standaard.

Verwijderd

ook goed, ik zal je verder niet lastig vallen, ook al wordt ik niet veel wijzer uit de help van flash en de sites via google.... bedankt tot nu toe

het werkt nog steeds niet, met die:
code:
1
_global.file=this.targ.loadMovie("start.swf");


van je herkent ie geen grootte van het bestand..

[ Voor 35% gewijzigd door Verwijderd op 17-12-2003 16:09 ]


Verwijderd

okay, ik heb nu in 1 flash file een ander flash file aangeroepen :
code:
1
2
file=loadMovie("test.swf", "targ");
file.getBytesTotal();

waarbij targ dus de legen MC is waarin test.swf wordt opgeroepen,
als ik dus de bytes wil opvragen dan krijg ik geen waarde terug...

hoe kan dit?!
Pagina: 1