Avatar billede ares Nybegynder
26. april 2008 - 23:31 Der er 5 kommentarer og
1 løsning

slideshow med ramme

Jeg er ikke flash haj. Så er det sagt. Men jeg har fundet frem til følgende:

// 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("images.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();

Som tager billede listet i en XML fil og viser dem med et passende interval.

Problemet er blot at jeg gerne vil have en ramme og en tekst lagt ind ovenpå hele molevitten.

Hvordan gør man det?

På forhånd tak.
Avatar billede mash Mester
27. april 2008 - 01:21 #1
laver et lag oven på i hovedtidslinje med det du vil ha oven på (text/gratik/anim)
Avatar billede ares Nybegynder
27. april 2008 - 10:29 #2
Hvis jeg laver et layer mere, og lægger teksten i dette, viser den kun teksten indtil det første billede er tonet op.

http://www.headdown.dk/vaf
Avatar billede andersbro Nybegynder
27. april 2008 - 11:03 #3
Efter denne linie:
var container_mc = this.createEmptyMovieClip("container",0);

skriv
frame_mc = this.attachMovieClip("frame", "frame", 1);

Så attacher du et movieclip fra biblioteket. Så du skallave din ramme om til et movieclip, højreklik på det i biblioteket, vælg "linkage", Vælg "Export for actionscript" og skriv "frame" som Identifier.
Så bliver din ramme attachet fra biblioteket og lagt i depth 1, ovenpå billederne, der ligger i depth 0.
Avatar billede andersbro Nybegynder
27. april 2008 - 11:04 #4
Sorry, attachMovie i stedet for attachMovieClip.
Avatar billede ares Nybegynder
27. april 2008 - 12:00 #5
>> AndersBro... perfekt det virker.. og forklaret så man kan fattet det... smid et svar.

Tak..
Avatar billede andersbro Nybegynder
27. april 2008 - 12:09 #6
Dejligt at det virker - og det var så lidt.
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