27. januar 2003 - 13:05
Der er
20 kommentarer og 2 løsninger
nextSibling/previousSibling
I det nedenståen bruger jeg nextSibling for at få næste billede. Ligeledes kan jeg bruge previousSibling til at få forrige, men hvordan springer jeg mere end et billede af gangen, hvis jeg f.eks vil have billede nr. 5 eller billede nr. 9? fremKnap.onRelease = function() { naesteBilledeNode = nuvaerendeBilledeNode.nextSibling; opdaterBillede(naesteBilledeNode); nuvaerendeBilledeNode = naesteBilledeNode; }; function opdaterBillede(nyBilledeNode) { jpgUrl = nyBilledeNode.attributes.jpgURL; billedeHolder.loadMovie(jpgUrl); }
Annonceindlæg fra Pax8
27. januar 2003 - 13:08
#1
naesteBilledeNode=(nuvaerendeBilledeNode+5).nextSibling; ???
27. januar 2003 - 13:09
#2
Kommer dog helt an på hvad der sker i dit funktionskald...
27. januar 2003 - 13:10
#3
Bah jeg mener hvilken værdi nuvaerendeBilledeNode har...
27. januar 2003 - 13:22
#4
Hvis jeg tracer nuvaerendeBilledeNode, får jeg f.eks: <imageNode jpgURL="pics/div02.jpg" thumbURL="pics/tn_div02.jpg">Billede tekst her</imageNode> så det kan jeg vel ikke så godt ligge 5 til...
27. januar 2003 - 13:30
#5
Ahhh... Nu sad jeg lige og gloede på de filer du har lagt ud.
27. januar 2003 - 13:37
#6
Nej det fandt jeg også lige ud af :-)
27. januar 2003 - 14:14
#7
Har lavet den lidt om for dig. Skal jeg sende den til dig?
27. januar 2003 - 14:16
#8
Du looper igennem og tager nextSibling X gange: (skal den wrappe rundt om "enderne" så skal du have lidt error-handling på) fremKnap.onRelease = function() { for (var skip = 4, var neasteBillede = nuvaerendeBilledeNode; --skip > 0; naesteBilledeNode = naesteBilledeNode.nextSibling); opdaterBillede(naesteBilledeNode); nuvaerendeBilledeNode = naesteBilledeNode; }; function opdaterBillede(nyBilledeNode) { var jpgUrl = nyBilledeNode.attributes.jpgURL; billedeHolder.loadMovie(jpgUrl); } Dog en anden nemmere måde at gøre det på er at huske indekset i parents childnodes-array... Så kan du joeg bare lægge til eller trække fra: fremKnap.onRelease = function() { var naesteBilledeNode = nuvaerendeBilledeNode+4; opdaterBillede(naesteBilledeNode); nuvaerendeBilledeNode = naesteBilledeNode; }; function opdaterBillede(nyBilledeNode) { var jpgUrl = parentNode.childNodes[nyBilledeNode].attributes.jpgURL; billedeHolder.loadMovie(jpgUrl); }
27. januar 2003 - 14:17
#9
I det sidste eksempel er nuvaerendeBilledeNode så ikke længere en XML node men derimod blot et tal... :o) /Barklund
27. januar 2003 - 14:22
#10
Jeg har også kun brugt tal.... :)) // billedeHolder createEmptyMovieClip("billedeHolder", 1); with (billedeHolder) { _x = 0; _y = 0; } // thumbHolder createEmptyMovieClip("thumbHolder", 2); with (thumbHolder) { _x = 300; _y = 375; } // tilbageKnap createEmptyMovieClip("tilbageKnap", 3); with (tilbageKnap) { beginFill(0x666666, 100); moveTo(0, 0); lineTo(0, 10); lineTo(-5, 5); endFill(0, 0); _x = 90; _y = 363; } createEmptyMovieClip("tilbageKnapMange", 9); with (tilbageKnapMange) { beginFill(0x666666, 100); moveTo(0, 0); lineTo(-10, 5); lineTo(0, 10); endFill(0, 0); _x = 80; _y = 363; } // fremKnap createEmptyMovieClip("fremKnap", 4); with (fremKnap) { beginFill(0x666666, 100); moveTo(0, 0); lineTo(5, 5); lineTo(0, 10); endFill(0, 0); _x = 140; _y = 363; } createEmptyMovieClip("fremKnapMange", 8); with (fremKnapMange) { beginFill(0x666666, 100); moveTo(0, 0); lineTo(10, 5); lineTo(0, 10); endFill(0, 0); _x = 150; _y = 363; } // billedeTekst createTextField("billedeTekst", 5, 0, 360, 0, 0); with (billedeTekst) { variable = "billedeTekst"; selectable = false; autoSize = true; embedFonts = true; minTekstFormat = new TextFormat(); minTekstFormat.font = "standard"; minTekstFormat.size = 8; minTekstFormat.color = 0x666666; setNewTextFormat(minTekstFormat); } // antalTekst createTextField("antalTekst", 6, 100, 360, 0, 0); with (antalTekst) { variable = "antalTekst"; selectable = false; autoSize = true; embedFonts = true; minTekstFormat = new TextFormat(); minTekstFormat.font = "standard"; minTekstFormat.size = 8; minTekstFormat.color = 0x666666; setNewTextFormat(minTekstFormat); } billederXml = new XML(); billederXml.onLoad = startGalleri; billederXml.load("billeder.xml"); billederXml.ignoreWhite = true; // // Vis det første billede og start variablerne function startGalleri(success) { if (success == true) { du = 0; rootNode = billederXml.firstChild; foersteImageNode = 0; nuvaerendeBilledeNode = foersteImageNode; // nuværende billede nuvaerendeBillede = 1; // antal billeder antalBilleder = rootNode.childNodes.length; // vis første childNode (første billede og tekst fil) opdaterBillede(foersteImageNode); } } nyLinie = 6; nuvaerendeThumb = 0; thumbnails = function () { if (nuvaerendeThumb<10) { if (nuvaerendeThumb>=nyLinie) { xpos = (nuvaerendeThumb-nyLinie)*20; ypos = 420; } else { xpos = nuvaerendeThumb*20; ypos = 400; } clip = _root.createEmptyMovieClip("thumb"+nuvaerendeThumb, 10+nuvaerendeThumb); // den nuværende x position clip._x = xpos; // den nuværende y position clip._y = ypos; clip.onEnterFrame = function() { this.beginFill(0x666666, 100); this.moveTo(0, 0); this.lineTo(15, 0); this.lineTo(15, 15); this.lineTo(0, 15); this.endFill(0, 0); }; clip.onRollOver = function() { // load thumb ind ind thumbHolder }; clip.onRollOut = function() { // tøm thumbHolder }; clip.onRelease = function() { // loadet billede ind i billedeHolder }; } nuvaerendeThumb++; }; setInterval(thumbnails, 150); // // opdaterer det nuværende billede med nyt billede og tekst function opdaterBillede(nyBilledeNode) { // stien til billedet jpgUrl = rootNode.childNodes[nyBilledeNode].attributes.jpgURL; trace(nyBilledeNode+" : "+jpgURL); // stien til thumbnailen thumbUrl = rootNode.childNodes[nyBilledeNode].attributes.thumbURL; // teksten til billedet billedeTekst = rootNode.childNodes[nyBilledeNode].firstChild.nodeValue; // load billedet ind i billedeHolder billedeHolder.loadMovie(jpgUrl); // load thumbnailen ind i thumbHolder thumbHolder.loadMovie(thumbUrl); antalTekst = nuvaerendeBillede+" af "+antalBilleder; } // // funktion til 'næste billede' knappen fremKnap.onRelease = function() { if (rootNode.childNodes[du+1] == null) { break; } else { du++; nu = rootNode.childNodes[du]; naesteBilledeNode = nu; nu = rootNode.childNodes[du]; nuvaerendeBillede++; opdaterBillede(du); nuvaerendeBilledeNode = du; } }; fremKnapMange.onRelease = function() { if (rootNode.childNodes[du+5] == null) { break; } else { du = du+5; nu = rootNode.childNodes[du]; naesteBilledeNode = nu; nu = rootNode.childNodes[du]; nuvaerendeBillede = nuvaerendeBillede+5; opdaterBillede(du); nuvaerendeBilledeNode = du; } }; // // funktion til 'forrige billede' knappen tilbageKnap.onRelease = function() { if (rootNode.childNodes[du-1] == null) { break; } else { du--; nu = rootNode.childNodes[du]; naesteBilledeNode = nu; nuvaerendeBillede--; opdaterBillede(du); nuvaerendeBilledeNode = du; } }; tilbageKnapMange.onRelease = function() { if (rootNode.childNodes[du-5] == null) { break; } else { du = du-5; nu = rootNode.childNodes[du]; naesteBilledeNode = nu; nuvaerendeBillede = nuvaerendeBillede-5; opdaterBillede(du); nuvaerendeBilledeNode = du; } };
27. januar 2003 - 14:23
#11
Kan sagtens omskrives til at fylde mindre men nu tog jeg bare fat derfra hvor du slap....
27. januar 2003 - 14:38
#12
Hmm... jeg gættede nu bare udfra den lille smule kode, der var smidt i spørgsmålet... :o) Men nikolajs ser ganske fornuftigt ud - nogenlunde som jeg selv ville have lavet det :o)
27. januar 2003 - 14:39
#13
Hvor fik du forresten hele filen fra? Var der hemmelige referencer til andre spørgsmål, som ikke blev offentliggjort? :o)
27. januar 2003 - 18:01
#14
Næh cellb10ck lagde kilden ud i et andet spørgsmål hvor jeg hentede den, men aldrig nåede at svare... :)
http://www.eksperten.dk/spm/309057 /Nikolaj
27. januar 2003 - 18:06
#15
Og jeg ved godt at mine variabler 'nu' og 'du' ikke er god programmeringsskik, men jeg kan bare ikke lade være....
28. januar 2003 - 09:56
#16
Tak for hjælpen! Hvis i kommer med et par svar, kan i få lidt point at deles om.
I er stadig mere end velkommene til at se på spørgsmål
http://www.eksperten.dk/spm/309057 da jeg er kørt helt fast...
28. januar 2003 - 10:01
#17
Det andet spørgsmål virker uoverskueligt, da du gerne vil have svar på alle seks ting på en gang.... Hvis du tog det et spørgsmål ad gangen, så vil det nok give bedre respons... :o) /Barklund
28. januar 2003 - 10:12
#18
Jeg forventer ikke at der af nogen der kommer med et svar der klare alle seks punkter på en gang. Jeg tænkte bare at det var bedre at samle det hele i et stort spørgsmål, i stedet for seks små.
28. januar 2003 - 10:25
#19
Det virker også mere uoverskueligt... Sådan rent personligt, så orker man ikke rigtig at gå igang, men jeg kan da godt svare på de nemmeste... :o)
28. januar 2003 - 10:28
#20
Det ville jeg da ikke brokke mig over :-)
28. januar 2003 - 11:38
#21
bøh :))
28. januar 2003 - 11:50
#22
Tak igen begge to!
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.