Diaporama loadmovie : SetInterval qui ne se vide pas

Résolu
Signaler
Messages postés
11
Date d'inscription
mercredi 11 août 2010
Statut
Membre
Dernière intervention
3 mars 2010
-
Messages postés
11
Date d'inscription
mercredi 11 août 2010
Statut
Membre
Dernière intervention
3 mars 2010
-
Bonsoir à tous et à toutes,
J'appelle la communauté de flashkod en l'espoir que celle ci puisse m'aider.

J'ai un site intégralement en AS2. le fichier principal contient 4 scènes
dans la première , j'ai un clip contenu qui contient ce code:
var monClip:MovieClip = this.createEmptyMovieClip("conteneur", 0);//clip conteneur
monClip._x = 28;
monClip._y = -40;
monClip._xscale = 94;
monClip._yscale = 102;
var mct:MovieClipLoader = new MovieClipLoader();//gestionnaire du chargement

var liste:Object = new Object();

liste.onLoadProgress = function(target:MovieClip, loaded:Number, total:Number):Void  {
var total = target.getBytesTotal();
var loaded = target.getBytesLoaded();
part_load = Math.round((loaded/total)*100);
display = part_load+"%";
bar._xscale = part_load;
};
liste.onLoadComplete = function(target:MovieClip):Void  {
display = "";
bar._visible = false;
contour_bar._visible = false;
};

mct.addListener(liste);
mct.loadClip("./diapo.swf",monClip);//chargement de monswf.swf dans monClip

stop();


dans le fichier diapo.swf, j'ai une image clé qui contient le code suivant :
this._lockroot=true
//Création des variables
var images:Array = new Array();
var param:Array = new Array();
var imageActu:Number;
var imageNext:Number;
var annee:Date = new Date();
//Viariables des intervals
var interAlpha:Number;
var interImage:Number;
var interTest:Number;
//Temps de pause par défaut
var timeStart:Number = 200;
var timeBetween:Number = 100;
//Variable pour la transition alpha
var val_alpha:Number = 0;
//Création des flags
var image1:Boolean = false;
var image2:Boolean = false;
var init:Boolean = true;

//MovieClip Conteneur1
var conteneur1:MovieClip = this.createEmptyMovieClip("conteneur1", 2);
var mclListener1:Object = new Object();
var mcl1:MovieClipLoader = new MovieClipLoader();
mcl1.addListener(mclListener1);

//MovieClip Conteneur2
var conteneur2:MovieClip = this.createEmptyMovieClip("conteneur2", 1);
var mclListener2:Object = new Object();
var mcl2:MovieClipLoader = new MovieClipLoader();
mcl2.addListener(mclListener2);

//Création d'un nouveau menu contextuel
var rootMenu = new ContextMenu();
rootMenu.hideBuiltInItems();
var rootMenuItem = new ContextMenuItem("© "+annee.getFullYear()+" Arobase Services", email);
rootMenu.customItems.push(rootMenuItem);
_root.menu = rootMenu;

function email() {
//getURL("@", "_self");
}


//Chargement du fichier XML contenant la liste des photos
var diapo:XML = new XML();
diapo.ignoreWhite = true;
diapo.load("diapo.xml");
//Traitement une fois le chargement effectuer
diapo.onLoad = function(success:Boolean) {
if(success){
//Creation des noeud
var noeudImage:XMLNode = this.firstChild.childNodes[0];
var noeudParam:XMLNode = this.firstChild.childNodes[1];
for (var i:Number = 0; i<noeudImage.childNodes.length; i++){
var temp:Object = new Object();
temp.titre = noeudImage.childNodes[i].attributes.titre;
temp.comm = noeudImage.childNodes[i].attributes.comm;
temp.xTxt = noeudImage.childNodes[i].attributes.xTxt;
temp.yTxt = noeudImage.childNodes[i].attributes.yTxt;
images.push(temp);
}
for (var i:Number = 0; i<noeudParam.childNodes.length; i++){
var temp:Object = new Object();
temp.valeur = noeudParam.childNodes[i].attributes.valeur;
temp.comm = noeudParam.childNodes[i].attributes.comm;
param.push(temp);
}
imageInit();
}
}

imageInit = function(){
if((param[0].valeur == "true")|(param[0].valeur == undefined)){
imageActu = randomNum(0, images.length-1);
imageNext = randomNum(0, images.length-1);
imageRandom();
}else{
imageActu = 0;
imageNormal();
}
if(param[1].valeur != undefined){timeStart = param[1].valeur;}
if(param[2].valeur != undefined){timeBetween = param[2].valeur;}
mcl1.loadClip(images[imageActu].titre, conteneur1);
mcl2.loadClip(images[imageNext].titre, conteneur2);
}

mclListener1.onLoadComplete = function(target:MovieClip):Void {
image1 = true;
if(init){
if(image2){
init = false;
interImage = setInterval(_root,"imageSwap",timeStart);
}
}else{
conteneur2.swapDepths(conteneur1);
mcl2.loadClip(images[imageNext].titre, conteneur2);
}
}

mclListener2.onLoadComplete = function(target:MovieClip):Void {
image2 = true;
if(init){
if(image1){
init = false;
interImage = setInterval(_root,"imageSwap",timeStart);
}
}else{
interImage = setInterval(_root,"imageSwap",timeBetween);
}
}

imageSwap = function(){
clearInterval(interImage);	
interAlpha = setInterval(this,"imageAlpha",6);
}

imageAlpha = function(){
if(val_alpha < 100){
conteneur1._alpha = (100-val_alpha);
conteneur2._alpha = val_alpha;
val_alpha += 1;
}
else{
clearInterval(interAlpha);
val_alpha = 0;
imageActu = imageNext;
if(param[0].valeur == "true"){
imageRandom();
}else{
imageNormal();
}
conteneur1.swapDepths(conteneur2);
conteneur1._alpha = 100;
mcl1.loadClip(images[imageActu].titre, conteneur1);
}
}

imageRandom = function(){
while(imageActu == imageNext){
imageNext = randomNum(0, images.length-1);
}
}

imageNormal = function(){
if(imageActu == images.length-1){
imageNext = 0;
}else{
imageNext = imageActu+1;
}
}

randomNum = function(min:Number, max:Number):Number{
var num:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return num;
}


Le diaporama fonctionne sans soucis et le loadmovie aussi.
De la, vous allez me dire tout va bien mais ca serait trop simple^^

Dans le clip contenu de la scène principale, j'ai 3 diaporama swf appelé. Dès que j'affiche les 3 à la suite ( avec des appels et des vidages de mes variables sur des boutons bien sur ) les diaporamas finissent par s'accelerer sans pouvoir se ralentir.

J'ai tout essayé pour vider mon setInterval mais rien n'y fait.
J'ai finis par vider tout mes clips mais ca non plus ca ne marche pas.

Je ne vois plus de solutions.
Quelqu'un peux t'il m'aider ??
Merci d'avance et en espérant avoir été assez précise.
croco

1 réponse

Messages postés
11
Date d'inscription
mercredi 11 août 2010
Statut
Membre
Dernière intervention
3 mars 2010

rebonsoir la communauté,
je ferme le topic car gazette67 m'a répondu sur mon erreur.
J'ai 3 boutons ( contenu dans un clip) qui appelle mes swf dans un loadmovie.
Les liens sur ces boutons étaient incorrect :
_root.Lenomduclip-quiload.removeMovieClip();

et en fait , il fallait mettre :
_parent.Lenomduclip-quiload.monClip.removeMovieClip();

Voila tout bête mais assez casse pied qd mm ^^

En espérant que ca aidera quelqu'un sur cette source bien utile