webForumDet fria alternativet

Jag har inget i frame 1 och ändå är det 259kb att ladda in?

Flash

7 svar · 449 visningar · startad av saturday

Medlem sedan jan. 2007133 inlägg
Frågan#1

Jag har ett skumt problem...

Jag har en preloader som script-mässigt ser ut som följer:

Frame1

loadpercent = "0%";

Frame2

loadPercent =  (Math.floor (_root.getBytesLoaded() / _root.getBytesTotal() * 100)) + "%";

if (_root.getBytesLoaded() == _root.getBytesTotal()){
loadPercent = "100%";
gotoAndPlay(4);
}

Frame3

gotoAndPlay(2);

Det som förövrigt laddas in i frame 1 är ett textfält som uppdaterar % i tal så att användaren ser den procent som laddats in. Och så är det en "loading bar" som utökar i längd efter procenten. Total storlek på på innehållet i frame 1 är ca 5-15kb.

Nu till ett allvarligt problem jag plötsligt såg att jag har - enligt bandwidth profilern, som jag tydligen inte tittat på under lång tid, laddar frame 1 in 259kb! Det stämmer inte alls då jag inte har grejer i Frame 1 som upptar sådan plats. Jag pillade runt, slängde lager, gick igenom preloadern, etc, för att försöka se vad det berodde på. Efter ett tag insåg jag att preloadern fungerar perfekt(Dock syns den inte innan frame 1 laddat in sina 259kb)och oavsett vilka objekt och lager jag slängde vägrade 259kb att minska. Men så efter att uteslutit allt vettigt tänkbart prövade jag till slut att radera objekt i mitt "Liberary" som preloadern ska förladda. Långsökt tyckte jag men vips så började nedladdningsmängden i frame 1 att sjunka. Genom att bara kasta alla bitmaps jag hade i mitt liberary sjunk det från 259kb till ca 128kb att ladda in i frame 1. Observera att ingen bitmap används före eller under preloadern. Alltså måste det, enligt mig, vara mitt liberarys "minne", som trots att det inte borde, laddas in i frame 1 ändå och upptar dryga 200kb av inladdningen...(Eller har jag fel?)

Hur kan detta vara möjligt och hur kan jag lösa detta så att preloadern även förladdar det? Jag vill ju endast att preloadern med dess enkla objekt ska laddas in i frame 1 och inget annat, resten vill jag sedan att preloadern förladdar in.

Vore så grymt tacksam för en lösning att jag utlovar en kram till den som kommer med en lösning på detta! Jag vill inte att mina besökare ska behöva vänta 259kb innan preloadern blir synlig. :)

Medlem sedan okt. 2004186 inlägg
#2

Använder du några komponenter?
Isåfall laddas dom troligtvis in i frame 1.

Medlem sedan maj 2003750 inlägg
#3

Det mesta du behöver veta om preloaders:
http://www.senocular.com/flash/tutorials/preloading/

/Mirandir

Medlem sedan jan. 2007133 inlägg
#4

rille31 skrev:

Använder du några komponenter?
Isåfall laddas dom troligtvis in i frame 1.

Vad menar du med komponenter? Syftar du på movieclips, graphics och buttons? Nej, det enda jag laddar in i frame 1 förutom scriptet ovan är ett dynamiskt textfält och en loadingbar som består av en vektor-rektangel.

Medlem sedan maj 2003750 inlägg
#5

Komponenterna ligger i panelen "components" och består främst av olika färdiga användargränsnitts komponenter om trädvyer, knappar och liknande. Men det finns även en flv-spelare och olika "data-connectors" för att t.ex koppla mot en webservice etc.

Förutom komponenterna finns det en hel uppsjö med saker som per default laddar i bildruta 1. Utan att de nödvändigtvis används där. Det kan vara t.ex: inbäddade typsnitt, symboler och ljud i biblioteket som är länkade för actionscript, Actionscript 2.0 klasser etc...

Medlem sedan jan. 2007133 inlägg
#6

Jag läser precis sidan du rekommenderade. Lite halvjobbigt att hänga med på allt där som skrivs men rent spontant verkar det än så länge mest logiskt/enkelt att skapa en egen extern load-swf som sedan laddar in innehållet från en extern fil. Men jag har en bit kvar att läsa och hur man gör så.

Medlem sedan jan. 2007133 inlägg
#7

Jag har hittat problemet, har dock inte riktigt lyckats lösa det än.

Det är ljuden som finns i min fil som jag tar in via "attachSound" som spökar. Det är när man använder sig av "attachSound" som det av default exporteras i frame 1. Har fattat så pass nu att man ska klicka ur "Export in first frame" för att tala om för filen att inte ladda in ljudet i frame 1. Men då slutar också ljudet att fungera som jag via actinscript startar direkt efter preloadern...

Varför det sjunk förut när jag raderade bitmaps är nu ett mysterium då så inte är fallet längre. Det är helt enkelt ljudet som bråkar.

Medlem sedan jan. 2007133 inlägg
#8

Ursäktar om jag diskuterar helt själv här nu. ;) Men vill berätta lösningen ifall någon annan skulle stöta på samma problem och läser detta.

Ljuden som jag tar in via "attatchSound" klickade jag ur "Export in first frame" på. I framen efter preloadern skapade jag ett movieclip. I Movieclipets första frame satte jag "stop();" och i frame 2 satte jag ljudet i "timeline'n". Detta för att Flash ska hitta ljudet i frame 2 rent fysiskt, så att preloadern tar hänsyn till ljudet, men ändå inte spelar upp ljudet då jag startar ljudet via actionscript.

På detta vis har jag egentligen flyttat ljudets inladdning från frame 1 till efter preloadern.

Tack för sidan Mirandir! Efter lite pill och påläsning där löste det sig. :) Och i och med att du gav mig lösningen får du en kram av mig. *kram*

265 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)