Avatar billede rosenberg Nybegynder
23. august 2005 - 11:17 Der er 18 kommentarer og
1 løsning

Hjælp til slideshow (XML)

Hej

nu tror jeg at jeg kan formulere en konkret spørgsmål!

Jeg har fundet et slide show som henter billeder ind via XML...

Men det er som om at den blander XML'erne sammen og derved billederne...

se på www.gils.dk/2005/ tryk på BIO eller RETOUCHING

Efter man har trykket lidt så begynder den at blande dem sammen... hvordan kan det være...
Bare sig til hvis i skal bruge AS eller XML kode...

/rosenberg
Avatar billede jakwag Nybegynder
23. august 2005 - 12:17 #1
hej

Ja, vi skal både se AS og XML. Men det er altså ikke noget du selv har lavet?

: ) jakob
Avatar billede rosenberg Nybegynder
23. august 2005 - 13:33 #2
XML:
<gallery timer="4" order="sequential" fadetime="2" looping="yes" xpos="133" ypos="88">
<image path="../INFO/BIO/bio_1.jpg" />
<image path="../INFO/BIO/bio_2.jpg" />
<image path="../INFO/BIO/bio_3.jpg" />
<image path="../INFO/BIO/bio_4.jpg" />
<image path="../INFO/BIO/bio_5.jpg" />
<image path="../INFO/BIO/bio_6.jpg" />
<image path="../INFO/BIO/bio_7.jpg" />
<image path="../INFO/BIO/bio_8.jpg" />
<image path="../INFO/BIO/bio_9.jpg" />
<image path="../INFO/BIO/bio_10.jpg" />
</gallery>

AS:
// set random # variables - each must be 0 for first 'while' loop below
var randomNum = 0;
var randomNumLast = 0;

// parent container
var container_mc = this.createEmptyMovieClip("container",0);
// movie clip containers
container_mc.createEmptyMovieClip("loader1_mc",2);
container_mc.createEmptyMovieClip("loader2_mc",1);

// preload watcher
this.createEmptyMovieClip("watcher_mc",100);

// load xml
images_xml = new XML();
images_xml.ignoreWhite=true;
images_xml.onLoad = parse;
images_xml.load("../xml/bioslide.xml");

function parse(success) {
    if (success) {
        imageArray = new Array();
        var root = this.firstChild;
        _global.numPause = Number(this.firstChild.attributes.timer * 1000);
        _global.order = this.firstChild.attributes.order;
        _global.looping = this.firstChild.attributes.looping;
        _global.fadetime = Number(this.firstChild.attributes.fadetime);
        _global.xpos = Number(this.firstChild.attributes.xpos);
        _global.ypos = Number(this.firstChild.attributes.ypos);
        var imageNode = root.lastChild;
        var s=0;
        while (imageNode.nodeName != null) {
            imageData = new Object;
            imageData.path = imageNode.attributes.path;
            imageArray[s]=imageData;
            imageNode = imageNode.previousSibling;
            s++;
        }
        // place parent container
        container_mc._x = _global.xpos;
        container_mc._y = _global.ypos;
        // parse array
        imageArray.reverse();
        imageGen(imageArray);
    } else {
        trace('problem');
    }
}

// depth swapping
function swapPlace(clip,num) {
    eval(clip).swapDepths(eval("container_mc.loader"+num+"_mc"));
}

function loadImages(data,num) {
    if (i==undefined || i == 2) {
        i=2;
        createLoader(i,data,num);
        i=1;
    } else if (i==1) {
        createLoader(i,data,num);
        i=2;
    }
}
function createLoader(i,data,num) {
    thisLoader=eval("container_mc.loader"+i+"_mc");
    thisLoader._alpha=0;
    thisLoader.loadMovie(data[num].path);
    watcher_mc.onEnterFrame=function () {
        var picLoaded = thisLoader.getBytesLoaded();
        var picBytes = thisLoader.getBytesTotal();
        if (isNaN(picBytes) || picBytes < 4) {
            return;
        }
        if (picLoaded / picBytes >= 1) {
            swapPlace("container_mc.loader2_mc",1);
            alphaTween = new mx.transitions.Tween(thisLoader, "_alpha", mx.transitions.easing.Regular.easeOut,0,100,_global.fadetime,true);
            timerInterval = setInterval(imageGen,_global.numPause,data);
            delete this.onEnterFrame;
        }
    }
}
function imageGen(data) {
    // random, or sequential?
    if (_global.order=="random") {
        // choose random # between 0 and total number of images
        while (randomNum == randomNumLast) {
            randomNum = Math.floor(Math.random() * data.length);
            trace(randomNum);
        }
        loadImages(data,randomNum);
        randomNumLast = randomNum;
    } else if (_global.order=="sequential") {
        // start at 0, increment to total number of images, then drop back to zero when done
        if (p==undefined || p==data.length && _global.looping=="yes") { p=0; } else { break; }
        loadImages(data,p);
        p++;
    } else {
        trace ("order attribute in xml isn't correct - must specify either 'random' or 'sequential'");
    }
    clearInterval(timerInterval);
}
stop();
Avatar billede rosenberg Nybegynder
23. august 2005 - 13:34 #3
nej det er ikke mig selv der har lavet det.... men kunne du se at den begyndte at blande billederne ?
Avatar billede jakwag Nybegynder
23. august 2005 - 13:47 #4
den blandede dem med det samme.. tror jeg, jeg ved jo ikke hvilke der skal være hvor. Nogle gange skiftede den også brat og underligt istedet for at fade.

Har du en xml fil til hver?

Jeg har ikke tid idag, men kigger på det senere.
Avatar billede jakwag Nybegynder
23. august 2005 - 13:50 #5
faktisk lavede jeg i mit sidste projekt en lille ting der automatisk (asp) fandt alle navne på billeder i en givet folder og så fader mellem dem i en tilfældig rækkefølge. Den må du da godt arve hvis det er, så slipper du for xml.
Avatar billede rosenberg Nybegynder
23. august 2005 - 13:57 #6
ja de begge har en XML fil hver... nu er det sådan at i nogle tilfælde skal det ikke være tilfældig rækkefølge...
i retouch skal der komme a1 fade til a2 og så fade til sort og så b1 -->b2
Avatar billede jakwag Nybegynder
23. august 2005 - 14:03 #7
jeg ved jo ikke hvordan du henter det, men den har en masse globale variabler. Det er skidt hvis du har to i to forskellige mc.

Sørg for at der kun er én der eksisterer ad gangen, så hvis du starter en ny skal du først slette den anden.

eller lav om i scriptet så det bruger lokale variabler istedet.
Avatar billede jakwag Nybegynder
23. august 2005 - 14:12 #8
prøv i starten af scriptet at skrive:

rod = this;

og alle steder hvor der står _global erstatter du _global med rod

Det kan måske løse nogle af problemmerne.
Avatar billede rosenberg Nybegynder
23. august 2005 - 14:46 #9
oki...

den hentes bare ind i en tomt mc...

Jeg prøver lige det du skrev...
Avatar billede rosenberg Nybegynder
23. august 2005 - 14:47 #10
forstår bare ikke... billeder bliver linket i XML... Men hvordan kan den blande 2 xml sammen ?
Avatar billede rosenberg Nybegynder
23. august 2005 - 14:59 #11
Det funker ad helvedes til stadig.... hmm Jeg som troede at det var simbelt med et slideshow som bare skal så og køre med fade... men ak :D

Ved sku ikke.... Har du andre ideer ?
Avatar billede jakwag Nybegynder
23. august 2005 - 15:01 #12
måske, men ikke lige nu. bliver nød til at vende tilbage senere - måske i morgen
Avatar billede jakwag Nybegynder
23. august 2005 - 15:02 #13
men det ville måske være nemmere at lave sin egen fra bunden, så ved man jo hvordan den virker. :)
Avatar billede rosenberg Nybegynder
23. august 2005 - 15:07 #14
ja... Jeg prøver selv at lave et fra bunden (ud fra tutorials) i aften... Send mig evt en mail...  jacob (a) insaneme.com

/rosenberg
Avatar billede barklund Nybegynder
23. august 2005 - 23:53 #15
Forholdsvis hurtig løsning vil være, at du retter

timerInterval = setInterval(imageGen,_global.numPause,data);

til

_global.timerInterval = setInterval(imageGen,_global.numPause,data);

Og samtidig tilføjer en:

clearInterval(timerInterval) helt øverst i dit script begge steder. Fejlen kommer fordi det gamle interval fra det gamle slideshow ikke afbrydes, når du skifter til det nye - altså funktionen kaldes automatisk hver X sekund, og du siger aldrig, at den skal holde op med det.

--
Morten Barklund
Avatar billede barklund Nybegynder
24. august 2005 - 00:09 #16
Og et svar, hvis det virker ;)

--
Morten Barklund
Avatar billede rosenberg Nybegynder
24. august 2005 - 00:09 #17
Barklund > det virkede! tak skal de ha!

jakwag > tak for hjælpen!

Barklund + jakwag > Smid et svar!

Jubiii!

/rosenberg
Avatar billede rosenberg Nybegynder
24. august 2005 - 00:12 #18
Tak! igen....

ville have givet lidt til jakob men han må nøjes med en takke sang

Tak for tak for taaaaaak for det...
Avatar billede jakwag Nybegynder
24. august 2005 - 10:43 #19
hehe! Helt OK - jeg må jo bøje mig i støvet når barklund endnu en gang bare sådan disker op med en løsning :)
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