Volledige versie bekijken : externe file preloaden
roeni1
%Europe/Berlin %468 %2005, 12:14
Hoi Flash Goeroe's
Is het mogelijk om een externe file (jpg/swf/flv/mp3) te preloaden? En dan bedoel ik ook dat je data kan opvragen om zo het percentage oid te berekenen
Het is voor offline gebruik, op het moment dat ik nu een swf van een aantal mb's inlaad in een andere swf dan zit heel flash even vast tot ie geladen is. Dit wil ik voorkomen dat wel alles gewoon door animeert.
Iemand ideeen??
Laiverd
%Europe/Berlin %491 %2005, 12:47
Hmm, da's allemaal echt niet zoveel anders dan gewoon preloaden, en ervoor zorgen dat de boel niet afspeelt totdat je dat zelf 'zegt'. Dus gewoon inladen in een movieclip en dat de reguliere preload code die overal te vinden is (getBytesLoaded() en getBytesTotal() op los laten.
John
theFlashWizard
%Europe/Berlin %524 %2005, 13:34
(alleen dan wel de getBytesLoaded en getBytesTotal opvragen van die movieclip natuurlijk)
roeni1
%Europe/Berlin %550 %2005, 14:12
hoe kan ik dan de getBytesLoaded opvragen van een externe file?
theFlashWizard
%Europe/Berlin %555 %2005, 14:19
hoe zou jij et doen wanneer je de swf zelf preload? \
en hoe zou je dat dan doen als je 1 mc wilt controleren?
Laiverd
%Europe/Berlin %573 %2005, 14:46
l = mcwaarjedeboelinlaadt.getBytesLoaded();
t = mcwaarjedeboelinlaadt.getBytesTotal();
if( l == t && t > 4){
// klaar met laden, verzin een list
}
Marianne
%Europe/Berlin %421 %2005, 11:06
Hallo,
Ik ben een collega van Roeni1
Bij het preloaden van externe files lijkt het wel of hij de totalbytes pas kan laten zien nadat de hele externe file geladen is - hij geeft dus eerst een poosje niets, dan laat hij desgevraagd de totalbytes zien, maar die zijn op dat moment hetzelfde als de loaded bytes.
Ik heb verscheidene preloaders geprobeerd, en ze laden de file zonder probleem, maar het wil maar niet lukken om een progress bar te laten lopen. Iemand nog goede ideeën?
theFlashWizard
%Europe/Berlin %442 %2005, 11:37
omdat je het lokaar / offline gebruikt heeft flash waarscheinlijk niet eens de tijd voor zo'n balk... omdat het zo snel gaat..
ik zou hoogstens voor n paar sec of minder een loading.. text neerzetten..
Marianne
%Europe/Berlin %523 %2005, 13:33
Hoi Flashwizard,
Bedankt voor je reactie.
Ik heb er een hele zware swf achter gehangen, en het toen getest met de instellingen van een 56 k modempje, dan had hij echt wel een aardige laadtijd, maar ook dan geeft hij geen percentages weer - behalve de 100%.
mateo)
%Europe/Berlin %547 %2005, 14:08
je moet het echt online testen :)
roeni1
%Europe/Berlin %566 %2005, 14:35
Nou... Online testen gaat niet want het is voor een OFFLINE project... Er wodrt dus een projector file gemaakt in flash dus dat de gebruiker een EXE bestand heeft die die opent. Dus de files komen niet op het internet te staan maar op een CDROM....
mateo)
%Europe/Berlin %594 %2005, 15:16
dan moet je er een exe van maken en branden op een schijfje en dan van het schijfje testen
roeni1
%Europe/Berlin %597 %2005, 15:19
dat hebben we dus ook al gedaan en het zou niet uit moeten maken of je nou van een netwerk de exe draait of van een cdrom.... Misschien dat het ene iets sneller is maar het percentage krijgen we gewoon niet te zien....
mateo)
%Europe/Berlin %606 %2005, 15:33
ok, ok :) kan je dan misschien je preloader scriptje posten?
Marianne
%Europe/Berlin %637 %2005, 16:17
Ik heb een aantal verschillende van het net geplukt en uitgeprobeerd.
Deze werken allemaal in de zin dat de external file wel geladen wordt, maar ze geven dus niet de loadedbytes weer.
var url = "mae.swf";
loadMovieNum(url, 1);
this.onEnterFrame = function() {
var BTotal = _level1.getBytesTotal();
var BLoaded = _level1.getBytesLoaded();
trace("BLoaded = "+BLoaded);
if (BTotal>0) {
var percent = Math.round(BLoaded/BTotal*100);
_root.Preloader.gotoAndStop(Math.round((19/100)*percent)+1);
if (percent == 100) {
delete this.onEnterFrame;
}
}
};
function loadFile() {
_root.createEmptyMovieClip("holder", 1);
sound_1 = new Sound(holder);
sound_1.onLoad = function(success) {
if (success) {
loadStatus.text = "The MP3 file has loaded.";
} else {
loadStatus.text = "Invalid URL. Try again.";
clearInterval(checkProgress);
}
};
sound_1.onSoundComplete = function() {
loadStatus.text = "The MP3 file has finished playing.";
};
sound_1.loadSound(fileURL.text, true);
loadStatus.text = "The MP3 file is loading.";
checkProgress = setInterval(checkLoad, 50);
}
function checkLoad() {
var obj = sound_1;
var lBytes = obj.getBytesLoaded();
trace("lBytes = " +lBytes);
var tBytes = obj.getBytesTotal();
trace("tBytes = " +tBytes);
var percentLoaded = (lBytes/tBytes)*100;
trace("percentLoaded = " + percentLoaded);
progressBar._xscale = percentLoaded;
if (lBytes>=tBytes) {
clearInterval(checkProgress);
}
}
function preload(MyCache) {
if (!MyCache.doneLoading) {
if (MyCache._framesloaded>0 && MyCache._framesloaded == MyCache._totalframes) {
MyCache.doneLoading = true;
}
OutputLoaded = MyCache.getBytesLoaded();
OutputTotal = MyCache.getBytesTotal();
var Slash = MyCache._url.lastIndexOf("/");
OutputFile = MyCache._url.substring(Slash+1, MyCache._url.length);
var percentLoaded = (MyCache.getBytesLoaded()/MyCache.getBytesTotal());
Bar._width = BarBorder._width*percentLoaded;
}
}
stop();
onClipEvent (enterFrame) {
Total = (_level1.getBytesTotal()+_root.getBytesTotal());
Loaded = (_level1.getBytesLoaded()+_root.getBytesLoaded());
trace(_level1.getBytesLoaded());
percent = Math.floor((Total/Loaded)*100);
if (percent == 100) {
trace("done");
}
}
theFlashWizard
%Europe/Berlin %667 %2005, 17:00
owke.. vlinke collectie..
voor actionscript script hebbe we trouwens de tags.. dat maakt het iets beter leesbaar.. :)
ik zou eens kijken naar de uber simpele maar wel duidelijk preloader tuturial op www.gotoAndLearn.com
mateo)
%Europe/Berlin %672 %2005, 17:08
Niet echt veel tijd nu om al die scripts goed door te lezen :(. Goed plan dat van theFlashWizard.
Mij is het ook niet helemaal duidelijk of je je movie nou in een level probeert te laden of in een placeholder movieclip. Ik kan ook niet zien of er wel 'contact' is tussen het script en de movieclip en het tekstveld die je gebruikt als progress bar + procent veldje...
Laiverd
%Europe/Berlin %770 %2005, 19:29
En het is echt onzin om de boel online of vanaf cdrom te testen. Via CTRL-Enter kun je gewoon de download simuleren en laadbalkjes doen het ook gewoon; ook externe files (vanaf MX2004). Dus ga hier alsjeblieft geen cdroms aan verspillen, maar laat de code zien die je gebruikt.
John
mateo)
%Europe/Berlin %794 %2005, 20:04
En het is echt onzin...
hoho, beter:
volgens mij vergist mateo) zich
+
...ook externe files (vanaf MX2004)
en wat heeft roeni1?
Laiverd
%Europe/Berlin %843 %2005, 21:14
Jij je zin; het is echt onzin en Mateo vergist zich. Roeni1 heeft in z' profiel staan dat ie Flash MX heeft; dat klopt. Maar daar zijn in het verleden al eerder posts op de mist in gegaan.
Marianne
%Europe/Berlin %280 %2005, 07:43
We proberen de movie in een level in te laden, en we gebruiken (helaas) nog steeds MX hier.
sorry voor de as tags, wist ik niet.
FlashWizard, ik ga het ff proberen, thanx.
edit: de basic flash preloader vertelt me niet echt iets nieuws. Zie ik er een over het hoofd, of bedoelde je die?
Wel een nuttige site trouwens.
Marianne
%Europe/Berlin %369 %2005, 09:52
We hebben het hier ook even getest met Flash 8.
De code die ik getest heb is:
var url = "mae3.swf";
loadMovieNum(url, 1);
this.onEnterFrame = function() {
var BTotal = _level1.getBytesTotal();
var BLoaded = _level1.getBytesLoaded();
if (BTotal>0) {
var percent = Math.round(BLoaded/BTotal*100);
_root.Preloader.gotoAndStop(Math.round((19/100)*percent)+1);
trace("percent = " + percent);
if (percent == 100) {
delete this.onEnterFrame;
}
}
};
Het werkt goed, in de zin dat ik netjes de geladen bytes terug krijg, maar als hij ongeveer 30% geladen is, begint de loaded movie al te spelen... Hij blijft ondertussen wel braaf verder laden.
Iemand ideeën?
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.