Forums Développement Multimédia

Aller au contenu

Problème avec de chargement xml

CODE Actionscript

8 réponses à ce sujet

#1 b.drion

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 55 messages

Posté 08 December 2008 - 19:04 PM

Bonjour,

J'ai récupéré un script d'un site qui charge des images via un fichier XML pour une galerie.
J'ai dû modifier légèrement le code, afin d'ajouter quelques bricoles : j'ai simplement rajouté un petit menu (en bas) correspondant au galerie. Je n'ai absolument pas toucher tout ce qui concerne le chargement des vignettes de la galerie.

La galerie est en ligne à cette adresse : http://www.danseusesdusinai.com/pak/

Lorsque l'on navigue directement par les boutons du bas, le chargement des vignettes se fait une fois sur 2. Mais si l'ont fait un retour sur l'accueil entra chaque galerie, les vignettes se charge à tous les coups.

Voici ci dessous l'action script concernant le chargement de la galerie page d'accueil (et sa destruction), le chargement des galeries (et leur destruction), et le code relatif au bouton du bas. En espérant que ça ne soit pas trop le bordel...

Avec les trace, j'ai pu voir que lorsque les vignettes ne se chargeaient pas, c'est en fait le list.onLoadInit (ligne 239) qui ne passe pas, donc le mcl.loadClip(urlArr[i-1], btn.cont) (ligne 365) qui ne se fait pas (pourtant il n'y pas de message d'erreur comme quoi il n'arrive pas à trouver l'image). Bon, c'est vrai qu'il ne faut pas avoir inventé la poudre pour trouver ça, et qu'on s'en doute un peu...

Voilà... si quelqu'un a déjà rencontré un problème similaire et qu'il a la solution, je suie tout ouï.
Merci.

Action Script



//CHARGEMENT DE LA GALERIE PRINCIPALE (EN PAGE D'ACCUEIL)
var createGallMenu = function(){

_root.mcLogo._visible = true
_root.isGallMenu = true;
_root.gallPress = false;
var counter:Number = 0;
var path:MovieClip = _root;

path["gallMenu"].removeMovieClip();

var gall:MovieClip = path.createEmptyMovieClip("gallMenu", path.getNextHighestDepth());
mcClose_.swapDepths(_root.getNextHighestDepth());


for (j=0; j<=4; j++){
var aSet:MovieClip = gall.createEmptyMovieClip("aSet"+j, gall.getNextHighestDepth());
trace("AAAASEEEET"+aSet)
aSet.depth = aSet.getDepth();
aSet._y = 350;

for (i=1; i<= _root.gallMenuImPath.length; i++){
var btn:MovieClip = aSet.attachMovie("aGBut", "btn"+i, aSet.getNextHighestDepth(),{_x:(-110+192*(i-1)), _y:0, _alpha:0});
btn.txt.txt.autoSize = true;
btn.txt.txt.text = _root.gallMenuNames[i-1];
btn._index = i;
btn.isOpen = false;
btn.depth = btn.getDepth();
btn.xPos = btn._x;
}
aSet._x += aSet._width*j;
}

for (i=1; i<=_root.gallMenuImPath.length; i++){
var btn:MovieClip = gall["aSet0"]["btn"+i];

var list:Object = new Object();

list.onLoadInit = function(mc:MovieClip){
var BData:BitmapData = new BitmapData(mc._width, mc._height, true);

for (j=0; j<=4; j++){
var th:MovieClip = gall["aSet"+j]["btn"+mc._parent._index];


th.cont._y = -50
th.cont.attachBitmap(BData, 0, "auto", true)
BData.draw(mc);


th.cont._xscale = th.cont._yscale = (182/th.cont._height >= 232/th.cont._width) ? Math.round(100*182/th.cont._height) : Math.round(100*232/th.cont._width);

th.back._x -= Math.round(th.back._width/2);
th.back._y -= Math.round(th.back._height/2);
th.mask._x -= Math.round(th.back._width/2);
th.mask._y -= Math.round(th.back._height/2);
th.cont._x -= Math.round(th.back._width/2);
th.cont._y -= Math.round(th.back._height/2);

if (j != 0){
th._alpha = 100;
th._rotation = 15*gen(th._index,3);
}

th.onRollOver = function(){
trace(th)
_root.menuSound.start();

if (this.isOpen){

this.gotoAndPlay("over");
} else {


openGallMenu(this)

}
}

th.onRollOut = th.onReleaseOutside = function(){
if (this.isOpen){
this.gotoAndPlay("out");
_root.closeGallMenu(_root.lastOpen);
} else {

_root.closeGallMenu(_root.lastOpen);
}
}

th.onRelease = function(){


if (_root.gallPress){

if (this.isOpen){

destroyGallMenu();

createGall(this._index);



}

}
}
}
var cTween:Tween = new Tween(mc._parent, "_alpha", Strong.easeOut, 0, 100, 1, true);
new Tween(mc._parent, "_x", Strong.easeOut, randNumb(-770,770), -110 + 192*(mc._parent._index-1), 1, true);
new Tween(mc._parent, "_y", Strong.easeOut, randNumb(-650,650), 0, 1, true);
new Tween(mc._parent, "_rotation", Strong.easeOut, randNumb(-180,180), 15*gen(mc._parent._index,3), 1, true)
cTween.onMotionFinished = function(){

if (++counter == _root.gallMenuImPath.length){

// move gall
gall._x -= gall._width/5*2 - 8;

gall.onEnterFrame = function(){
if (!_root.lastOpen.isOpen){
if (_root._xmouse >0 && _root._xmouse<400){
gall._x += vitesseDefilement*(1 - _root._xmouse/400);
if (gall._x > - gall._width/5){
gall._x -= gall._width/5;
}
}

if (_root._xmouse < 1024 && _root._xmouse > 600){
gall._x -= vitesseDefilement*((_root._xmouse-600)/400);
if (gall._x < - gall._width/5*3){
gall._x += gall._width/5;
}
}
}
}
_root.gallPress = true;
}
}

}
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(list);
mcl.loadClip(_root.gallMenuImPath[i-1], btn.cont);
}
}


//DESTRUCTION DE LA GALERIE PRINCIPALE
var destroyGallMenu = function(){

hideLoader();
_root.mcLogo._visible = false
_root.lastOpen.isOpen = false;
_root.isGallMenu = false;
var path:MovieClip = _root.gallMenu;
var setArr:Array = new Array();
var btnArr:Array = new Array();
_root.mcClose_.hideme();

for (i in path){
if (typeof(path[i])=="movieclip"){
if (path[i].hitTest(mcMainBack)){
setArr.push(path[i]);
} else {
path[i].removeMovieClip();
}
}
}

for (j=0; j<setArr.length; j++){
for (k in setArr[j]){
if (typeof(setArr[j][k])=="movieclip"){
if (setArr[j][k].hitTest(mcMainBack)){
var cTween:Tween = new Tween(setArr[j][k], "_x", Strong.easeOut, setArr[j][k]._x, randNumb(-770,770), .75, true);
new Tween(setArr[j][k], "_y", Strong.easeOut, setArr[j][k]._y, randNumb(-650,650), .75, true);
new Tween(setArr[j][k], "_alpha", Strong.easeOut, setArr[j][k]._alpha, 0, .75, true);
new Tween(setArr[j][k], "_rotation", Strong.easeOut, setArr[j][k]._rotation, randNumb(-180,180), .75, true);
cTween.onMotionFinished = function(){
path.removeMovieClip();
}
} else {
setArr[j][k].removeMovieClip();
}
}
}
}
}


//CREATION DE LA GALERIE
var createGall = function(num:Number){

showLoader();
_root.isGallery = true;

_root.gallPress = false;

var counter:Number = 0;
var path:MovieClip = _root;
_root.mcClose_.hideme();

var urlArr:Array = _root.getThumbPath(num);
var imArr:Array = _root.getImPath(num);

path["gall"].removeMovieClip();

var gall:MovieClip = path.createEmptyMovieClip("gallery", path.getNextHighestDepth());
_root.mcClose_.swapDepths(_root.getNextHighestDepth())

var setNumLimit:Number = 5*Math.ceil(15/imArr.length);


for (j=0; j<=setNumLimit; j++){
var aSet:MovieClip = gall.createEmptyMovieClip("aSet"+j, gall.getNextHighestDepth());
aSet.depth = aSet.getDepth();
aSet._y = 500;
aSet._index = j;

for (i=1; i<= urlArr.length; i++){
var btn:MovieClip = aSet.attachMovie("aTh", "btn"+i, aSet.getNextHighestDepth(),{_x:(55*(i-1)), _y:0, _alpha:0});
btn._index = i;
btn.isOpen = false;
btn.depth = btn.getDepth();
btn.xPos = btn._x;

}
aSet._x += aSet._width*j;

}

showBigIm(num, 0);

for (i=1; i<=urlArr.length; i++){
var btn:MovieClip = gall["aSet0"]["btn"+i];

var list:Object = new Object();
list.onLoadInit = function(mc:MovieClip){
var BData:BitmapData = new BitmapData(mc._width, mc._height, true);

for (j=0; j<=setNumLimit; j++){

var th:MovieClip = gall["aSet"+j]["btn"+mc._parent._index];

trace("BOUCLE 1=="+th)
th.cont.attachBitmap(BData, 0, "auto", true)
BData.draw(mc);

th.cont._y = -25
th.cont._width = 75;
th.cont._height = 89;

th.back._x -= Math.round(th.back._width/2);
th.back._y -= Math.round(th.back._height/2);
th.mask._x -= Math.round(th.back._width/2);
th.mask._y -= Math.round(th.back._height/2);
th.cont._x -= Math.round(th.back._width/2);
th.cont._y -= Math.round(th.back._height/2);

if (j != 0){
th._alpha = 100;
th._rotation = 15*gen(th._index,3);
}

th.onRollOver = function(){

_root.menuSound.start();
if (!this.isOpen){
//animSaturation(this, 100, 0 ,8);
}
}

th.onRollOut = th.onReleaseOutside = function(){
if (!this.isOpen){
//animSaturation(this, 0, 100 ,8);
}
}

th.onRelease = function(){


if (_root.gallPress){

if (!this.isOpen){

if (this._index != _root.lastOpen._index){

loadIm( num, (this._index-1));
if (_root.popVissible){

_root.showPop(num, (this._index-1));
}
}
openGall(this)
} else {

closeGall(this)
}
}
}
}

prec.onRelease =function(){

if(imVisible == 0){
imVisible = urlArr.length-1
}else{
imVisible --
}

loadIm( num, imVisible);
closeGall(_root.lastOpen)

}
suiv.onRelease =function(){

if(imVisible == urlArr.length-1){
imVisible = 0
}else{
imVisible ++
}

loadIm( num, imVisible);
closeGall(_root.lastOpen)

}


var cTween:Tween = new Tween(mc._parent, "_alpha", Strong.easeOut, 0, 100, 1, true);
new Tween(mc._parent, "_x", Strong.easeOut, randNumb(-770,770), 55*(mc._parent._index-1), 1, true);
new Tween(mc._parent, "_y", Strong.easeOut, randNumb(-650,650), 0, 1, true);
new Tween(mc._parent, "_rotation", Strong.easeOut, randNumb(-180,180), 15*gen(mc._parent._index,3), 1, true)
cTween.onMotionFinished = function(){

if (++counter == urlArr.length){
// move gall
gall._x -= gall._width/5*2 - 8;
hideLoader();

gall.onEnterFrame = function(){
if (!_root.lastOpen.isOpen){
if (_root._xmouse >0 && _root._xmouse<400){
gall._x += vitesseDefilement*(1 - _root._xmouse/400);
if (gall._x > - gall._width/5){
gall._x -= gall._width/5;
}
}

if (_root._xmouse < 1024 && _root._xmouse > 600){
gall._x -= vitesseDefilement*((_root._xmouse-600)/400);
if (gall._x < - gall._width/5*3){
gall._x += gall._width/5;
}
}
}
}
_root.gallPress = true;
}
}

}
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(list);
mcl.loadClip(urlArr[i-1], btn.cont);
}
}


//ON DETRUIT LA GALERIE EN COURS LORSQUE L'ON VA CLIQUER SUR UN BOUTON DU BAS
var destroyGallery = function(){


prec._y = -200
suiv._x = -200
info._y = -100
if (_root.popVissible){
_root.hidePop();
}

hideLoader();
_root.isGallery = false;
var path:MovieClip = _root.gallery
var setArr:Array = new Array();
var btnArr:Array = new Array();

hideBigIm();
_root.mcClose_.hideme();

for (i in path){
if (typeof(path[i])=="movieclip"){
if (path[i].hitTest(mcMainBack)){
setArr.push(path[i]);
} else {

path[i].removeMovieClip();
}
}
}

for (j=0; j<setArr.length; j++){
for (k in setArr[j]){
if (typeof(setArr[j][k])=="movieclip"){
if (setArr[j][k].hitTest(mcMainBack)){
var cTween:Tween = new Tween(setArr[j][k], "_x", Strong.easeOut, setArr[j][k]._x, randNumb(-770,770), .75, true);
new Tween(setArr[j][k], "_y", Strong.easeOut, setArr[j][k]._y, randNumb(-650,650), .75, true);
new Tween(setArr[j][k], "_alpha", Strong.easeOut, setArr[j][k]._alpha, 0, .75, true);
new Tween(setArr[j][k], "_rotation", Strong.easeOut, setArr[j][k]._rotation, randNumb(-180,180), .75, true);
cTween.onMotionFinished = function(){

path.removeMovieClip();
}
} else {

setArr[j][k].removeMovieClip();
}
}
}
}
}

//FONCTION PRESS DES BOUTONS DU BAS

btn.onRelease = function(){



if (_root.mayPress && this._index == 1 && _root.mainPage == 1 && _root.isGallery){

_root.createGallMenu();
_root.destroyGallery();
}

if (_root.mayPress && this._index != _root.mainPage){

_this["btn"+_root.mainPage].gotoAndPlay("out");

if (this._index == 4 ){

//PAGE CONTACT

_root.destroyGallMenu();
_root.destroyGallery();
showPage(this._index);
}

if (this._index > 1){
if(this._index <>4){
//PAGE GALERIE

_root.destroyGallMenu();
_root.destroyGallery();
_root.createGall(tabGall[this._index-1]);

hidePage(_root.mainPage)
_root.mainPage = this._index;

}
}


if (this._index == 1){
//PAGE ACCUEIL

_root.destroyGallery();
_root.createGallMenu();
hidePage(_root.mainPage)
_root.mainPage = 1;

}

}


}





#2 paodao

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 7081 messages

Posté 08 December 2008 - 19:41 PM

salut
bon déjà posté 400 ligne de codes est pas la meilleur façon d'avoir une réponse
imagine que tu doivent rentrer dans un code de 400 lignes icon_eek.gif

essai de cibler un peu ton problème

sinon en voyant les dernières lignes de ton code on voit
if(this._index <>4){
qui est du code AS1 si je ne me tromper
donc aujourd'hui ca s'ecris
if(this._index !=4){

sinon je vois plein de _root, pas bien

tu déclare aussi des fonctions dans des fonctions du style
function a(){
function b()
{
}
}
ce qui est pas bien aussi(sauf si on le choisi pour les bonnes raisons)

après peux être que tu auras des réponses

mais si tu veux en avoir plus essai de mieux cibler ton problème

a+




#3 b.drion

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 55 messages

Posté 08 December 2008 - 19:48 PM

Merci pour votre réponse.

En fait c'est un script que j'ai récupéré (tel quel), le problème, c'est que justement, je n'arrive pas à savoir ou il (le problème) se situe exactement. A part que flash ne passe pas le onLoadinit.

Merci pour le conseil, je le prend en considération.

#4 paodao

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 7081 messages

Posté 08 December 2008 - 19:55 PM

oki
donc je vais la faire plus direct et un peux moins gentil(désolé)

si tu comprend pas 1/4 de ce script oublie le
apprend les bases de flash, évolue, et une fois que tu sauras replonge toi dans ton problème

se plonger dans un script de 20 lignes demande du temps, et faux comprendre le problème, donc faut avoir envie
se plonger dans un script qui pointe vers des movieclips qu'on ne connait, qui charge un fichier xml qu'on ne connait pas
et extrement difficile

je dis pas que c'est pas possible, juste que tu reduis par 99% les personnes capables de te répondre

sans compter que le script que tu as recuprer est obsolète depuis plusieurs années

a+

#5 b.drion

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 55 messages

Posté 08 December 2008 - 20:31 PM

En fait, le script je le comprends (grosso modo). Je pense connaitre les bases de flash, peut être même un peu plus. Même si je suis pas vraiment un pur développer, c'est vrai (je suis graphiste à la base). Ceci dit c'est vrai que je ne me suis jamais encore penché sur l'utilisation de XML, donc pour ce coup là, je suis un peu perdu. Pour info, je n'ai pas vraiment pour habitude de récupérer des scripts et de les utiliser tel quel, je préfère tout faire par moi même (quite à galérer et perdre un peu de temps).

Dans ce cas la, c'est en fait le site d'un ami qui ne pratique pas du tout flash, et qui m'a demandé quelques modifs sur ce site (promis c'est vrai, j'essaie pas m'inventer une fausse excuse).

J'avoue que j'aurai pas dû balancer une grosse partie du code n'importe comment en espérant que quelques n'ait que ça a faire de perdre sa nuit dans mon code (c'est bientôt noël, certes, mais faut pas pousser non plus).

Merci pour les remarques (même un peu direct, je ne les prends pas mal, et en retiens ce qu'il y a a retenir).

#6 thierrydestroy

    Ceinture Blanche

  • Members
  • Pip
  • 1 messages

Posté 09 December 2008 - 00:41 AM

Salut,

Je pense que le problème se situe au niveau de la ligne 150 à 194 lors de la destruction de la galerie. Je pense qu'il y a des problèmes au niveau des roots.

Voilà

#7 paodao

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 7081 messages

Posté 09 December 2008 - 10:06 AM

ba au pire
post un fla avec le fichier XML
comme ça on peux au moins testé le truc icon_wink.gif

a+

#8 b.drion

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 55 messages

Posté 11 December 2008 - 12:26 PM

J'ai mis les fichier (fla, xml etc..) à télécharger ici :

http://flash.mediabox.fr/index.php?act=att...st&id=44697

Merci pour les éventuelles futures réponses.

#9 b.drion

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 55 messages

Posté 12 December 2008 - 10:51 AM

Mon lien ne marche plus.
Je le remets donc ici.

Merci

Modifié par benohitte, 12 December 2008 - 10:52 AM.




1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)