26. marts 2003 - 10:37
Der er
7 kommentarer og 1 løsning
Start funktion med array
Jeg har en funktion til at preloade billeder med. Den bruges ved at angive billedstien samt hvilket movieclip billedet skal loades ind i: preloadJPG("pics/billede01.jpg", "billedeHolder0"); Jeg har alle mine billedstier i en array. Hvordan bruger jeg arrayet til min preloader funktion? Følgende virker ikke: for (i=0; i<=billedeSti.length; i++) { createEmptyMovieClip("billedeHolder"+i, i); preloadJPG(billedeSti[i], "billedeHolder"+i); }
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
26. marts 2003 - 11:17
#1
hvordan ser resten ud?
26. marts 2003 - 11:51
#2
Hvad tænker du på nikolajdu? Preloader funktionen, eller hvad?
26. marts 2003 - 12:35
#3
Umiddelbart er der intet her der ikke skulle virke efter hensigten. Ergo så må det enten være sammenhængen eller en fejl andetsteds ;-)
26. marts 2003 - 12:49
#4
Ok, du får lige hele svineriet. Strengen fra PHP ser f.eks sådan her ud: &billedeSti=pics/pic01.jpg+pics/pic02.jpg+pics/pic03.jpg+ // // tekstformat normal normal = new TextFormat(); normal.font = "standard"; normal.size = 8; normal.color = 0x666666; // // tekstformat fed fed = new TextFormat(); fed.font = "standard_bold"; fed.size = 8; fed.color = 0x666666; // // preload jpg prototype MovieClip.prototype.preloadJPG = function(jpg, target) { _global.preloaderCount++; this.createEmptyMovieClip("preloader"+_global.preloaderCount, 100+_global.preloaderCount); var mc = this["preloader"+_global.preloaderCount]; targetX = target._x+target._width/2-40; targetY = target._y+target._height/2-20; mc.createTextField("statusText"+_global.preloaderCount, 100, targetX, targetY, 150, 40); var tf = mc["statusText"+_global.preloaderCount]; tf.type = "dynamic"; tf.selectable = false; tf.embedFonts = true; tf.setNewTextFormat(fed); target.loadMovie(jpg); mc.onEnterFrame = function() { this.procent = Math.floor((target.getBytesLoaded()/target.getBytesTotal())*100); if (!isNan(this.procent) && target.getBytesTotal()>50) { tf.text = this.procent+"% loaded"; this.clear(); with (this) { lineStyle(1, 0x666666, 100); moveTo(targetX-3, targetY+17); lineTo(targetX+103, targetY+17); lineTo(targetX+103, targetY+26); lineTo(targetX-3, targetY+26); lineTo(targetX-3, targetY+17); endFill(); } with (this) { beginFill(0x666666, this.procent); lineStyle(1, 0x666666, this.procent); moveTo(targetX, targetY+20); lineTo(targetX+procent, targetY+20); lineTo(targetX+procent, targetY+23); lineTo(targetX, targetY+23); lineTo(targetX, targetY+20); endFill(); } } else { tf.text = "0% loaded"; } if (this.procent == 100 && target.getBytesTotal()>50) { mc.removeMovieClip(); delete this.onEnterFrame; } }; }; // // function loadBillede(katagori, valg) { loadBillede = new loadVars(); loadBillede.load("billeder.php?katagori="+katagori+"&valg="+valg); loadBillede.onLoad = function(success) { if (success) { minVar = loadBillede.billedeSti; var arrVar = new Array(); arrVar = minVar.split("+"); for (i=0; i<=arrVar.length; i++) { createEmptyMovieClip("billedeHolder"+i, i); _root["billedeHolder"+i]._x = 200*i; // virker hvis jeg bruger loadMovie istedet for preloader funktionen //loadMovie(arrVar[i], "billedeHolder"+i); preloadJPG(arrVar[i], "billedeHolder"+i); } } else { trace("kan ikke loade billederne"); } }; } loadBillede('web', 'tidensmoebler');
26. marts 2003 - 13:53
#5
OK, jeg har prøvet denne kode. Erstatte "+" med "," eller en anden delimiter. "+" can nemt blive til " " afhængig om text encoding. "target" er en reserveret navn, kalde den "maal" isted for. Den her virke, (billederne komme frem i hvert fald) // preload jpg prototype MovieClip.prototype.preloadJPG = function(jpg, maal) { _global.preloaderCount++; this.createEmptyMovieClip("preloader"+_global.preloaderCount, 100+_global.preloaderCount); var mc = this["preloader"+_global.preloaderCount]; targetX = maal._x+maal._width/2-40; targetY = maal._y+maal._height/2-20; mc.createTextField("statusText"+_global.preloaderCount, 100, targetX, targetY, 150, 40); var tf = mc["statusText"+_global.preloaderCount]; tf.type = "dynamic"; tf.selectable = false; tf.embedFonts = true; tf.setNewTextFormat(fed); _root[maal].loadMovie(jpg); trace(maal+" loading "+jpg); mc.onEnterFrame = function() { this.procent = Math.floor((target.getBytesLoaded()/target.getBytesTotal())*100); if (!isNan(this.procent) && target.getBytesTotal()>50) { tf.text = this.procent+"% loaded"; this.clear(); with (this) { lineStyle(1, 0x666666, 100); moveTo(targetX-3, targetY+17); lineTo(targetX+103, targetY+17); lineTo(targetX+103, targetY+26); lineTo(targetX-3, targetY+26); lineTo(targetX-3, targetY+17); endFill(); } with (this) { beginFill(0x666666, this.procent); lineStyle(1, 0x666666, this.procent); moveTo(targetX, targetY+20); lineTo(targetX+procent, targetY+20); lineTo(targetX+procent, targetY+23); lineTo(targetX, targetY+23); lineTo(targetX, targetY+20); endFill(); } } else { tf.text = "0% loaded"; } if (this.procent == 100 && target.getBytesTotal()>50) { mc.removeMovieClip(); delete this.onEnterFrame; } }; }; // // function loadBillede(katagori, valg) { loadBillede = new loadVars(); loadBillede.load("test.txt"); loadBillede.onLoad = function(success) { if (success) { minVar = loadBillede.billedeSti; trace(minVar); var arrVar = new Array(); arrVar = minVar.split(","); for (i=0; i<=arrVar.length; i++) { createEmptyMovieClip("billedeHolder"+i, i); _root["billedeHolder"+i]._x = 200*i; // virker hvis jeg bruger loadMovie istedet for preloader funktionen //loadMovie(arrVar[i], "billedeHolder"+i); preloadJPG(arrVar[i], "billedeHolder"+i); } } else { trace("kan ikke loade billederne"); } }; } loadBillede('web', 'tidensmoebler');
26. marts 2003 - 13:56
#6
her er "test.txt"; &billedeSti=pics/pic01.jpg,pics/pic02.jpg,pics/pic03.jpg 8)
26. marts 2003 - 17:01
#7
Så virker det. Jeg forstår bare ikke helt at det var det der gjorde udslaget, preloader funktionen virkede jo fint nok før hvis man skrev: preloadJPG("pics/billede01.jpg", "billedeHolder0"); Tak for hjælpen!
26. marts 2003 - 17:10
#8
Det afgørende var target.loadMovie(jpg); fordi target er out of scope... _root[target].loadMovie(jpg); Det andre ting kan også give udoverskulig resulteter, men KUNNE virke. Tak ;)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.