Buongiorno ragazzi,
vengo subito al sodo: ho trovato un ottimo script Flash per realizzare uno slide di immagini importate tramite xml, a questo indirizzo trovate il file da dowlodare, si chiama "Slide show source x FMX2004 - AS2" (http://whatdoiknow.org/archives/001629.shtml).
Il mio problema è che vorrei che una volta che lo script ha caricato e mostrato tutte le immagini, in modalità sequenziale e senza loop, vada direttamente ad un differente frame della timeline con un comando simile al "gotoandStop".
Qualcuno riesce a fare la modifica allo script?
Lo copio qui sotto:
###################
/****************************/
/* Crossfading slide show */
/* Author: Todd Dominey */
/* http://whatdoiknow.org */
/* http://domineydesign.com */
/****************************/
// 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"+n um+"_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);
MovieClip.forceSmoothing = "true";
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();
###################
Grazie anticipate se qualcuno riuscirà nell'impresa, io non ci salto fuori.
Enrico