Avatar billede mortenbock Nybegynder
15. december 2004 - 17:13 Der er 11 kommentarer og
1 løsning

Slideshow viser ikke første foto

Hejsa.

Jeg sidder og roder med et slideshow i noget actionscript, men kan ikke få den til at vise det første foto i rækken med det samme. Når man trykker på "næste" kommer billede nr 2 frem...

Koden ser således ud:

-------------------------------------------
stop();

var myMCL:MovieClipLoader = new MovieClipLoader();

var slideInfoLV:LoadVars = new LoadVars();
slideInfoLV.load("foto.php?tekst=" + _global.bf);

var myLV:LoadVars = new LoadVars();

myLV.onLoad = function(success) {
    if (success) {
        loadedInfo.htmlText = myLV.info;
    } else {
        loadedInfo.text = "Sårn noget lård";
    }
}


var curFrameNum:Number = 1;

function loadFrame() {
    myMCL.loadClip("medier/" + slideInfoLV.mappe + "/" + curFrameNum + ".jpg", this.dingbat);
    myLV.load("tekst" + curFrameNum + ".txt");
}

loadFrame();



// ------------------------<next slide button>-------------- \\
this.nextSlideBtn.onRelease = function() {
    if (curFrameNum < Number(slideInfoLV.totalFrames)) {
        curFrameNum++;
    } else {
        curFrameNum = 1;
    }
    loadFrame();
}
// ------------------------</next slide button>-------------- \\

// ------------------------<previous slide button>-------------- \\
this.prevSlideBtn.onRelease = function() {
    if (curFrameNum == 1) {
        curFrameNum = Number(slideInfoLV.totalFrames);
    } else {
        curFrameNum--;
    }
    loadFrame();
}
// ------------------------</previous slide button>-------------- \\
frameNum.autoSize = "center";
Avatar billede baitianlong Nybegynder
15. december 2004 - 17:19 #1
Prøv at skifte den her ud:

var curFrameNum:Number = 1;

med:

var curFrameNum = 1;
Avatar billede mortenbock Nybegynder
15. december 2004 - 17:24 #2
Hjalp ikke noget. Det eneste den gør er vel også at sikre sig det er et tal?
Avatar billede baitianlong Nybegynder
15. december 2004 - 17:34 #3
tja, kommer billede nr 1, hvis du trykker frem og så tilbage?
Avatar billede mortenbock Nybegynder
15. december 2004 - 17:37 #4
ja, det er kun lige når man starter op at der er tomt.... Du kan klikke så tosset du vil uden at der bliver tomt igen...

Kan det være fordi det hele bliver kørt i én frame, og at den så ikke når at vise det? Kan man evt. vente på en klarmelding før den indsætter billedet?
Avatar billede mortenbock Nybegynder
15. december 2004 - 23:24 #5
var curFrameNum:Number = 1;
var myData = new LoadVars();
myData.onLoad = function(src) {
    var sti = "medier/" + myData.mappe + "/";
    trace (sti);
    // create a MovieClipLoader object
    myLoader = new MovieClipLoader();
    myLoader.loadClip(sti + curFrameNum + ".jpg", dingbat);
};
myData.load("http://localhost/leck/foto.php?tekst=" + _global.bf);


function loadFrame() {
    myData.load("http://localhost/leck/foto.php?tekst=" + _global.bf);
}

// ------------------------<next slide button>-------------- \\
this.nextSlideBtn.onRelease = function() {
    if (curFrameNum < Number(myData.totalFrames)) {
        curFrameNum++;
    } else {
        curFrameNum = 1;
    }
    trace(curFrameNum);

    loadFrame();
}
// ------------------------</next slide button>-------------- \\

// ------------------------<previous slide button>-------------- \\
this.prevSlideBtn.onRelease = function() {
    if (curFrameNum == 1) {
        curFrameNum = Number(myData.totalFrames);
    } else {
        curFrameNum--;
    }
    loadFrame();
}
// ------------------------</previous slide button>-------------- \\
frameNum.autoSize = "center";
Avatar billede mortenbock Nybegynder
15. december 2004 - 23:27 #6
Det her virker i hvert fald. Men så vidt jeg kan se, så kalder den PHP filen hver gang den skal forøge curFrameNum.

Burde der ikke være en nemmere måde at gøre det på?
Avatar billede barklund Nybegynder
16. december 2004 - 00:02 #7
Ingen grund til at loade al teksten hver gang - eneste problem i dit oprindelige setup er, at slideInfoLV ikke er loaded før du første gang kalder loadFrame. Flyt loadFrame til en onLoad kald på slideInfoLV ved at erstatte linjen med blot:

loadFrame();

Med en linje med blot:

slideInfoLV.onLoad = loadFrame;

Og fjern "this." i loadFrame så du får:

myMCL.loadClip("medier/" + slideInfoLV.mappe + "/" + curFrameNum + ".jpg", dingbat);

Så burde det virke :)

--
Morten Barklund
Avatar billede mortenbock Nybegynder
16. december 2004 - 00:45 #8
tænk, så let kunne det gøres :D

Smider du lige et svar barklund?

Er der et godt link til at forstå rækkefølgen i hvad der bliver kaldt hvornår? Kan sgu ikke helt se logikken i det halløj...
Avatar billede barklund Nybegynder
16. december 2004 - 01:21 #9
Alt hvad du skriver i en frame bliver "udført" med det samme. I en lang køre. Dog vil alle goto-metoder for movieclips samt alle loadMovie og tilsvarende eksterne load kald blot "huskes" til hele scriptet er kørt færdigt og først derefter blive iværksat.

Indholdet af funktioner bliver ikke eksekveret, før funktionerne kaldes. onLoad-funktioner på XML, LoadVars og tilsvarende kaldes naturligt nok af playeren selv når de pågældende ting er loaded. Det er sådan set ret simpelt.

En vigtig ting at forstå er, at der ingen "pauser" i eksekveringen er. For eksempel hvis man kalder loadVars på en fil, så er den ikke tilgængelig i næste linje - den bliver hentet "ved siden af" eksekveringen af scriptet og dukker først op "på et tidspunkt" - hvilket kan fanges med onLoad.

--
Morten Barklund
Avatar billede barklund Nybegynder
16. december 2004 - 01:21 #10
Og et svar :)
Avatar billede mortenbock Nybegynder
16. december 2004 - 01:24 #11
Tak for hjælpen :-)
Avatar billede barklund Nybegynder
16. december 2004 - 01:26 #12
Og tark for points :)
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