PDA

Volledige versie bekijken : loop in XML slideshow maken


Thomsa
%Europe/Berlin %382 %2008, 09:11
Hey iedereen,

ik ben een slideshow aan t maken waar de foto's uit een XML geladen worden en van rechts binnen komen schuiven op de stage. De slideshow werkt maar het loopen naar de eerste slide niet:


import mx.transitions.Tween;
import mx.transitions.easing.*;

setInterval(moveContent,1000);

function moveContent() {
var tween:Tween = new Tween(menu_mc, "_x", Strong.easeInOut, menu_mc._x, menu_mc._x-1024, 40, false);
if(menu_mc._x = -(menu_mc.width)+Stage.width){
menu_mc._x = 0;
}
}



function GeneratePortfolio(portfolio_xml) {
var portfolioPictures = portfolio_xml.firstChild.childNodes;
for (var i = 0; i<portfolioPictures.length; i++) {
var currentPicture = portfolioPictures[i];

var currentThumb_mc = menu_mc.createEmptyMovieClip("thumbnail_mc"+i, i);
currentThumb_mc._x = i*Stage.width;

currentThumb_mc.createEmptyMovieClip("thumb_container",0);
currentThumb_mc.thumb_container.loadMovie(currentP icture.attributes.thumb);
}
}


var portfolio_xml = new XML();
portfolio_xml.ignoreWhite = true;
portfolio_xml.onLoad = function(success) {
if (success) {
GeneratePortfolio(this);
} else {
trace("Error loading XML file");
}// no success? trace error (wont be seen on web)
};

portfolio_xml.load("xmlData.xml");


dit:

if(menu_mc._x = -(menu_mc.width)+Stage.width){
menu_mc._x = 0;
}

stukje zal denk ik anders moeten. Iemand een idee hoe dat te doen?
Thanks!

Jan
%Europe/Berlin %501 %2008, 12:02
De slideshow werkt
0)Ook online getest waar het laden van foto's even duurt, integenstelling tot testen vanuit Flash waar alles onmiddelllijk beschikbaar is?

1) Je start dat interval bovenaan je script al onmiddellijk, nog voordat je zeker weet dat alle xml geladen is en nog voor dat je weet dat alle foto's geladen zijn. Je bent dus misschien lege movieclips aan het verschuiven. Je moet dus eerst zeker weten dat voldoende (of alle foto's geladen zijn). Gebruik daarom beter de MovieClipLoader class om foto's te laden in plaats van loadMovie omdat je dan weet of een foto geladen is of niet. Uitleg en voorbeeldscript en fla hier: http://www.flashfocus.nl/forum/showpost.php?p=345219&postcount=5

3) Dat interval werkt met milliseconden(1000) maar in je tween gebruik je frames(40). Ik ga er dus vanuit dat je framerate op 40 staat zodat die overeenkomt met die 1000. Maar stel dat Flash die framerate (online) op bepaalde momenten niet aankan en hij maar 30 fps haalt... je interval wacht daar niet op en na 1 seconde doet hij de volgende tween terwijl eigenlijk de vorige nog niet voltooid was, waardoor het helemaal in het honderd loopt. Dus je gebruikt best seconden in je tween en dan zet je true ipv false.
En nog beter is om te luisteren naar het tween.onMotionFinished event zodat je zeker weet dat de tween ten einde is en dan kan je onmiddellijk de volgende tween starten en als je toch een tussentijd tussen de tweens wil gebruik je een setTimeout in de onMotionFinished.

Groeten,
Jan