Avatar billede juulp Nybegynder
18. august 2008 - 13:31 Der er 8 kommentarer og
1 løsning

random timer i XML

Jeg kører et image gallery der loader fotos ind i random rækkefølge. Kan man også kører time random? Har forsøgt bare at skrive time="random" men så banker den bare en masse billeder af i løbet af et par sekunder og finder så et normalt tempo igen....Vil gerne kører tempoet random mellem 2-4 sekunder

Håber I kan hjælpe
Avatar billede w13 Novice
18. august 2008 - 13:37 #1
Ja. Prøv at vise din kode.
Avatar billede jokkejensen Novice
18. august 2008 - 14:48 #2
Det kan man ikke, så har det i hvert fald ikke noget med xml at gøre.. VML, har man et <v:image> men det har ikke sådanne attritter..

Mon ikke det er noget xslt extensions eller noget du er ude efter? - Det er også "umuligt" med xslt alene, der skal en extension til.
Avatar billede w13 Novice
18. august 2008 - 14:50 #3
Nej, det skulle så gøres i selve image galleriet.
Avatar billede juulp Nybegynder
18. august 2008 - 14:56 #4
xml filen:


<!-- 
'timer' :: number of seconds between each image transition
'order' :: how you want your images displayed. choose either 'sequential' or 'random'
'looping' :: if the slide show is in sequential mode, this stops the show at the last image (use 'yes' for looping, 'no' for not)
'fadeTime' :: velocity of image crossfade. Increment for faster fades, decrement for slower. Approximately equal to seconds.
'xpos' :: _x position of all loaded clips (0 is default)
'ypos' :: _y position of all loaded clips (0 is default)
-->
<gallery timer="2" order="random" fadetime="1" looping="yes" xpos="0" ypos="0">
<image path="images/a1.jpg" />
<image path="images/a2.jpg" />
<image path="images/a3.jpg" />
<image path="images/a4.jpg" />
<image path="images/a5.jpg" />
<image path="images/a6.jpg" />
Avatar billede w13 Novice
18. august 2008 - 15:14 #5
Hvad henter du XML-filen ind i?
Avatar billede juulp Nybegynder
18. august 2008 - 15:31 #6
HENTES IND I EN SWF -
Avatar billede w13 Novice
18. august 2008 - 15:36 #7
Så er det vel koden i din FLA-fil, vi skal rette i.
Avatar billede juulp Nybegynder
18. august 2008 - 15:45 #8
KOMMER HER :
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("imagesa.xml");

function parse(success) {
    if (success) {
        imageArray = new Array();
        var root = this.lastChild;
        _global.numPause = Number(this.firstChild.attributes.timer *2000);
        _global.order = this.firstChild.attributes.order;
        _global.looping = this.lastChild.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=="no") { 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 w13 Novice
18. august 2008 - 15:54 #9
Tror bare, du skal rette:

_global.numPause = Number(this.firstChild.attributes.timer *2000);

til:

var iTimer=this.firstChild.attributes.timer;
if(iTimer=="random"){
  iTimer=Math.floor(Math.random*2)+2;
}
_global.numPause = Number(iTimer*2000);
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
Kurser inden for grundlæggende programmering

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