Ho un problema che non riesco a risolvere in alcun modo.
Ho un mc, con cui creo uno slide show caricando dinamicamente le immagini.
Questo è il codice che ho sul 2° frame del mc (sul primo, ho uno stop();, in modo da poterlo attivare al click di un pulsante):
Codice PHP:
var randomNum = 0;
var randomNumLast = 0;
import mx.transitions.Tween;
import mx.transitions.easing.Regular;
var container_mc = this.createEmptyMovieClip("container", 0);
container_mc.setMask(miaMask);
container_mc.createEmptyMovieClip("loader_acc1_mc", 2);
container_mc.createEmptyMovieClip("loader_acc2_mc", 1);
this.createEmptyMovieClip("watcher_mc", 100);
images_xml = new XML();
images_xml.ignoreWhite = true;
images_xml.onLoad = parse;
images_xml.load("acc.xml");
function parse(success) {
if (success) {
imageArray = new Array();
var root = this.firstChild;
_global.numPause = Number(root.attributes.timer*1000);
_global.order = root.attributes.order;
_global.looping = root.attributes.looping;
_global.fadetime = Number(root.attributes.fadetime);
_global.xpos = Number(root.attributes.xpos);
_global.ypos = Number(root.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++;
}
container_mc._x = _global.xpos;
container_mc._y = _global.ypos;
imageArray.reverse();
imageGen(imageArray);
} else {
trace('problem');
}
}
function swapPlace(clip, num) {
eval(clip).swapDepths(eval("container_mc.loader_acc"+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) {
ritorna();
thisLoader = eval("container_mc.loader_acc"+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.loader_acc2_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) {
if (_global.order == "random") {
while (randomNum == randomNumLast) {
randomNum = Math.floor(Math.random()*data.length);
trace(randomNum);
}
loadImages(data, randomNum);
randomNumLast = randomNum;
} else if (_global.order == "sequential") {
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();
Questo mc, che ha nome di istanza film, si trova in questa posizione:
_root.background.tv.film
Il mio problema è che mi occorre poter interrompere lo slide show, facendo scomparire le immagini caricate, attraverso un pulsante. Ma, benché abbia provato in tutti i modi (settando un _alpha = 0, spostando il mc su _x = -1000, utilizzando il comando delete...), non mi riesce questa semplicissima operazione.
Ho provato utilizzando come path sia _root.background.film.container.loader_acc1_mc sia _root.background.film.loader_acc1_mc, sia _root.background.container.loader_acc1_mc, ma sempre senza alcun risultato (ovviamente, facendo lo stesso anche con ...acc2_mc....
Help urgentissimo!!!
:master: