Avatar billede thulstrup Nybegynder
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);
}
Avatar billede nikolajdu Nybegynder
27. januar 2003 - 13:08 #1
naesteBilledeNode=(nuvaerendeBilledeNode+5).nextSibling;

???
Avatar billede nikolajdu Nybegynder
27. januar 2003 - 13:09 #2
Kommer dog helt an på hvad der sker i dit funktionskald...
Avatar billede nikolajdu Nybegynder
27. januar 2003 - 13:10 #3
Bah jeg mener hvilken værdi nuvaerendeBilledeNode har...
Avatar billede thulstrup Nybegynder
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...
Avatar billede nikolajdu Nybegynder
27. januar 2003 - 13:30 #5
Ahhh... Nu sad jeg lige og gloede på de filer du har lagt ud.
Avatar billede nikolajdu Nybegynder
27. januar 2003 - 13:37 #6
Nej det fandt jeg også lige ud af :-)
Avatar billede nikolajdu Nybegynder
27. januar 2003 - 14:14 #7
Har lavet den lidt om for dig. Skal jeg sende den til dig?
Avatar billede barklund Nybegynder
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);
}
Avatar billede barklund Nybegynder
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
Avatar billede nikolajdu Nybegynder
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;
    }
};
Avatar billede nikolajdu Nybegynder
27. januar 2003 - 14:23 #11
Kan sagtens omskrives til at fylde mindre men nu tog jeg bare fat derfra hvor du slap....
Avatar billede barklund Nybegynder
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)
Avatar billede barklund Nybegynder
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)
Avatar billede nikolajdu Nybegynder
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
Avatar billede nikolajdu Nybegynder
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....
Avatar billede thulstrup Nybegynder
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...
Avatar billede barklund Nybegynder
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
Avatar billede thulstrup Nybegynder
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å.
Avatar billede barklund Nybegynder
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)
Avatar billede thulstrup Nybegynder
28. januar 2003 - 10:28 #20
Det ville jeg da ikke brokke mig over :-)
Avatar billede nikolajdu Nybegynder
28. januar 2003 - 11:38 #21
bøh :))
Avatar billede thulstrup Nybegynder
28. januar 2003 - 11:50 #22
Tak igen begge to!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester