Toon posts:

[Flash] controleren of bestand al geladen is

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben nogal nieuw met flash, maar ik heb voor het bedrijf waarbij ik werk de taak op mij genomen om de website te voltooien.
De flash animatie had nooit goed gewerkt maar die moet ik dus nu werkent krijgen.

Het probleem is:
De animatie gebruikt allemaal losse animaties die die bij het opstarten allemaal laad.
Er is een controle ingebouwd waarbij word gecontrolleerd of de losse stukjes volledig geladen zijn voordat de animatie verder gaat.
Dit gebeurt door de regels:

code:
1
2
3
4
5
if (_root.knop1.getBytesLoaded() == _root.knop1.getBytesTotal()) {
    gotoAndPlay(_currentframe+1);
} else {
    gotoAndPlay(_currentframe-1);
}


nu is het zo dat de animatie hier heel vaak op blijft hangen omdat schijnbaar de hoeveelheid bytes niet overeenkomt.
Het probleem is dat locaal alles perfect werkt maar op het moment dat je de zaak upload niet.
Is er een andere manier om te controleren of een bestandje volledig geladen is voordat de animatie verder gaat?

Hier even de animatie zonder de check.
Bij het laden van de knoppen blijft ie normaal dus hangen.
http://www.yvonnejeugdmode.nl/swf/menup.html

  • Johnny
  • Registratie: December 2001
  • Laatst online: 11:56

Johnny

ondergewaardeerde internetguru

Iets met frameLoaded ofzo, als ik me het goed herriner, zoek eens even in de help.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 10:46
Wat degene hierboven mij bedoelt is dat je ipv naar het aantal gelade bytes ook naar het aantal geladen frames kan kijken. In jouw voorbeeld zou dat dan woorden:
JavaScript:
1
2
3
4
5
if (_root.knop1._framesloaded == _root.knop1._totalframes) {
    gotoAndPlay(_currentframe+1);
} else {
    gotoAndPlay(_currentframe-1);
}


Hopelijk heb je hier iets aan, if not zou ik graag wat meer van de structuur van Flash filmpje zien (wat wordt waar aangeroepen).

  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 13:41

GrimaceODespair

eens een tettenman, altijd ...

Die regels code wat je daar hebt, moeten regelmatig uitgevoerd worden. Waarschijnlijk wordt die lap maar 1x uitgevoerd. Dat zou verklaren waarom het lokaal wel werkt: lokaal alles altijd meteen. Daaruit volgt dat lokaal getBytesLoaded() altijd meteen gelijk aan getBytesTotal().

Wil je de boel nu testen zonder telkens te hoeven uploaden, dan kan je tijdens het testen van een movie nogmaals op [CTRL]+[ENTER] drukken. Dan springt de profiler aan en kan je modem-downloads simuleren. Als mijn hypothese klopt, zal de boel nu ook niet werken.

Zorg dus dat die code regelmatig wordt uitgevoerd met 1 van volgende methodes:
  • een loopje
  • setInterval
  • onEnterFrame / on(enterFrame)
Verder nog een opmerking: zolang het filmpje nog niet helemaal geladen is, stuurt dat stukje code de boel telkens 1 frame terug, maar wel met gotoAndPlay. Da's een beetje zoals Sisyphus met die steen. Het else-gedeelte kan dus beter dit zijn:
Flash ActionScript:
1
gotoAndStop(1) 


Nog beter zou overigens zijn als je het filmpje gewoon laat stoppen in het begin, en, dankzij 1 van bovenstaande timer-mogelijkheden, een gotoAndPlay-opdracht geeft als het spul volledig binnen is.

De rest mag je zelf uitzoeken.

---
Tot zover mijn goede daad voor vandaag O-)

Wij onderbreken deze thread voor reclame:
http://kalders.be