Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Raul Pettoruti

galeria com array AS2, erro no nivel da timeline

Recommended Posts

Bom dia, estou com problema em uma galeria de imagens que chama as imagens usando um array.

 

O swf funciona corretamente sozinho, mas quando chamo ele pelo _root (swf principal) carrega parcialmente. Acredito que o problema seja em algum nível da timeline.

 

Abaixo o código AS2 da galeria

/*
  i wrote this code, but you can use and abuse it however you like.
  the methods are defined in the order which they occur to make it
  easier to understand.
*/
// variables ------------------------------------------
// put the path to your pics here, include the slashes (ie. "pics/")
// leave it blank if they're in the same directory
this.pathToPics = "animation/";
// fill this array with your pics
this.pArray = ["image0.jpg", "image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg", "image5.jpg", "image6.jpg", "image7.jpg", "image8.jpg", "image9.jpg"];
this.fadeSpeed = 20;
this.pIndex = 0;
// MovieClip methods ----------------------------------
// d=direction; should 1 or -1 but can be any number
//loads an image automatically when you run animation
loadMovie(this.pathToPics+this.pArray[0], _root.photo);
MovieClip.prototype.changePhoto = function(d) {
// make sure pIndex falls within pArray.length
this.pIndex = (this.pIndex+d)%this.pArray.length;
if (this.pIndex<0) {
	this.pIndex += this.pArray.length;
}
this.onEnterFrame = fadeOut;
};
MovieClip.prototype.fadeOut = function() {
if (this.photo._alpha>this.fadeSpeed) {
	this.photo._alpha -= this.fadeSpeed;
} else {
	this.loadPhoto();
}
};
MovieClip.prototype.loadPhoto = function() {
// specify the movieclip to load images into
var p = _root.photo;
//------------------------------------------
p._alpha = 0;
p.loadMovie(this.pathToPics+this.pArray[this.pIndex]);
this.onEnterFrame = loadMeter;
};
MovieClip.prototype.loadMeter = function() {
var i, l, t;
l = this.photo.getBytesLoaded();
t = this.photo.getBytesTotal();
if (t>0 && t == l) {
	this.onEnterFrame = fadeIn;
} else {
	trace(l/t);
}
};
MovieClip.prototype.fadeIn = function() {
if (this.photo._alpha<100-this.fadeSpeed) {
	this.photo._alpha += this.fadeSpeed;
} else {
	this.photo._alpha = 100;
	this.onEnterFrame = null;
}
};
// Actions -----------------------------------------
// these aren't necessary, just an example implementation
this.onKeyDown = function() {
if (Key.getCode() == Key.LEFT) {
	this.changePhoto(-1);
} else if (Key.getCode() == Key.RIGHT) {
	this.changePhoto(1);
}
};
Key.addListener(this);

 

No arquivo _root principal crio um movieclip vazio

_root.createEmptyMovieClip("cpopup", _root.getNextHighestDepth());

 

 

E mando abrir a galeria com um botão num swf filho

on (release) {
_root["cpopup"].loadMovie("2-esg02.swf");
}

 

O que acontece:

A galeria funciona sozinha no swf, mas quando peço para ela abrir no swf principal dá erro, não abre e só aparece um jpg.

 

Não sei se fui claro, mas se ficou alguma dúvida me avisem que tento escalrecer.

 

Desde já agradeço a atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom como você mesmo disse ele não ta abrindo pq você ta usando uma regra muito ampla para criar os objetos.

Quando você usa _root você ta indo para a raiz do arquivo, se você mandar outro arquivo abrir esse swf, ele vai buscar o root do arquivo principal e não do secundário.

 

Então na criação do objeto você deve criar um objeto local, sem _root.

 

Crie um MC no qual vai receber os dados, mesmo sendo um clip vazio.

 

var mc:MovieClip = new MovieClip();

E trabalhe com ele assim :)

E no botão em vez de chamar com root você usa o path até ele... ou seja mc.nome etc

Se não quiser criar um MC e no root do objeto anterior crie com this em vez de root.


Ex:
[code]

/*
  i wrote this code, but you can use and abuse it however you like.
  the methods are defined in the order which they occur to make it
  easier to understand.
*/
// variables ------------------------------------------
// put the path to your pics here, include the slashes (ie. "pics/")
// leave it blank if they're in the same directory
this.pathToPics = "animation/";
// fill this array with your pics
this.pArray = ["image0.jpg", "image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg", "image5.jpg", "image6.jpg", "image7.jpg", "image8.jpg", "image9.jpg"];
this.fadeSpeed = 20;
this.pIndex = 0;
// MovieClip methods ----------------------------------
// d=direction; should 1 or -1 but can be any number

// MovieClip
var mc:MovieClip = new MovieClip();
//loads an image automatically when you run animation
loadMovie(this.pathToPics+this.pArray[0], mc.photo);
MovieClip.prototype.changePhoto = function(d) {
       // make sure pIndex falls within pArray.length
       this.pIndex = (this.pIndex+d)%this.pArray.length;
       if (this.pIndex<0) {
               this.pIndex += this.pArray.length;
       }
       this.onEnterFrame = fadeOut;
};
MovieClip.prototype.fadeOut = function() {
       if (this.photo._alpha>this.fadeSpeed) {
               this.photo._alpha -= this.fadeSpeed;
       } else {
               this.loadPhoto();
       }
};
MovieClip.prototype.loadPhoto = function() {
       // specify the movieclip to load images into
       var p = mc.photo;
       //------------------------------------------
       p._alpha = 0;
       p.loadMovie(this.pathToPics+this.pArray[this.pIndex]);
       this.onEnterFrame = loadMeter;
};
MovieClip.prototype.loadMeter = function() {
       var i, l, t;
       l = this.photo.getBytesLoaded();
       t = this.photo.getBytesTotal();
       if (t>0 && t == l) {
               this.onEnterFrame = fadeIn;
       } else {
               trace(l/t);
       }
};
MovieClip.prototype.fadeIn = function() {
       if (this.photo._alpha<100-this.fadeSpeed) {
               this.photo._alpha += this.fadeSpeed;
       } else {
               this.photo._alpha = 100;
               this.onEnterFrame = null;
       }
};
// Actions -----------------------------------------
// these aren't necessary, just an example implementation
this.onKeyDown = function() {
       if (Key.getCode() == Key.LEFT) {
               this.changePhoto(-1);
       } else if (Key.getCode() == Key.RIGHT) {
               this.changePhoto(1);
       }
};
Key.addListener(this);

 

OBS: O código não foi testado, estou colocando com base em meus conhecimentos, pode haver erros de digitação, ou erro no código.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz umas alterações no código e agora carrega corretamente o swf, obrigado.

Mas ainda está com um erro, o array não funciona (não passa para o segundo item), quando clico na seta para passar para a próxima foto o fadeOut e o fadeIn funcionam mas volta a carregar a primeira foto.

 

Abaixo o código já carregando corretamente, mas não passa para a outra foto.

 

/*
  i wrote this code, but you can use and abuse it however you like.
  the methods are defined in the order which they occur to make it
  easier to understand.
*/
// variables ------------------------------------------
// put the path to your pics here, include the slashes (ie. "pics/")
// leave it blank if they're in the same directory
this.pathToPics = "imgs/eventos/es001/";
// fill this array with your pics
this.pArray = ["240.jpg", "246.jpg", "276.jpg", "DSC04005.JPG", "FEL_0490.JPG", "FEL_0575.JPG", "FEL_0610.JPG", "FEL_5992.JPG", "FEL_6004.JPG", "FEL_6048.JPG", "FEL_6096.JPG", "FEL_6156.JPG", "IMG_2164.jpg", "IMG_2280.jpg"];
this.fadeSpeed = 20;
this.pIndex = 0;
// MovieClip methods ----------------------------------
// d=direction; should 1 or -1 but can be any number
//loads an image automatically when you run animation
loadMovie(this.pathToPics+this.pArray[0], this.photo);
MovieClip.prototype.changePhoto = function(d) {
// make sure pIndex falls within pArray.length
this.pIndex = (this.pIndex+d)%this.pArray.length;
if (this.pIndex<0) {
	this.pIndex += this.pArray.length;
}
this.onEnterFrame = fadeOut;
};
MovieClip.prototype.fadeOut = function() {
if (this.photo._alpha>this.fadeSpeed) {
	this.photo._alpha -= this.fadeSpeed;
} else {
	this.loadPhoto();
}
};
MovieClip.prototype.loadPhoto = function() {
// specify the movieclip to load images into
var p = _root.photo;
//------------------------------------------
p._alpha = 0;
p.loadMovie(this.pathToPics+this.pArray[this.pIndex]);
this.onEnterFrame = loadMeter;
};
MovieClip.prototype.loadMeter = function() {
var i, l, t;
l = this.photo.getBytesLoaded();
t = this.photo.getBytesTotal();
if (t>0 && t == l) {
	this.onEnterFrame = fadeIn;
} else {
	trace(l/t);
}
};
MovieClip.prototype.fadeIn = function() {
if (this.photo._alpha<100-this.fadeSpeed) {
	this.photo._alpha += this.fadeSpeed;
} else {
	this.photo._alpha = 100;
	this.onEnterFrame = null;
}
};
// Actions -----------------------------------------
// these aren't necessary, just an example implementation
this.onKeyDown = function() {
if (Key.getCode() == Key.LEFT) {
	this.changePhoto(-1);
} else if (Key.getCode() == Key.RIGHT) {
	this.changePhoto(1);
}
};
Key.addListener(this);

 

 

Acredito que o problema esteja no caminho por aqui:

 

MovieClip.prototype.loadPhoto = function() {
// specify the movieclip to load images into
var p = _root.photo;
//------------------------------------------
p._alpha = 0;
p.loadMovie(this.pathToPics+this.pArray[this.pIndex]);
this.onEnterFrame = loadMeter;
};

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lembra do que eu falei???

 

Olha o _root ali... ele tem que usar o mc.photo e não o _root

Pois se você tentar o root ele vai estar acessando o principal e não o secundário... logo não existe o elemento photo.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora foi, muito obrigado pela ajuda.

 

Mudei a chamada:

on (release) {
_root["cpopup"].loadMovie("2-esg02.swf");
}

 

 

e o código ficou assim (sem o _root na var p):

 

/*
  i wrote this code, but you can use and abuse it however you like.
  the methods are defined in the order which they occur to make it
  easier to understand.
*/
// variables ------------------------------------------
// put the path to your pics here, include the slashes (ie. "pics/")
// leave it blank if they're in the same directory
this.pathToPics = "imgs/eventos/es001/";
// fill this array with your pics
this.pArray = ["240.jpg", "246.jpg", "276.jpg", "DSC04005.JPG", "FEL_0490.JPG", "FEL_0575.JPG", "FEL_0610.JPG", "FEL_5992.JPG", "FEL_6004.JPG", "FEL_6048.JPG", "FEL_6096.JPG", "FEL_6156.JPG", "IMG_2164.jpg", "IMG_2280.jpg"];
this.fadeSpeed = 20;
this.pIndex = 0;
// MovieClip methods ----------------------------------
// d=direction; should 1 or -1 but can be any number
//loads an image automatically when you run animation
loadMovie(this.pathToPics+this.pArray[0], this.photo);
MovieClip.prototype.changePhoto = function(d) {
// make sure pIndex falls within pArray.length
this.pIndex = (this.pIndex+d)%this.pArray.length;
if (this.pIndex<0) {
	this.pIndex += this.pArray.length;
}
this.onEnterFrame = fadeOut;
};
MovieClip.prototype.fadeOut = function() {
if (this.photo._alpha>this.fadeSpeed) {
	this.photo._alpha -= this.fadeSpeed;
} else {
	this.loadPhoto();
}
};
MovieClip.prototype.loadPhoto = function() {
// specify the movieclip to load images into
var p = this.photo;
//------------------------------------------
p._alpha = 0;
p.loadMovie(this.pathToPics+this.pArray[this.pIndex]);
this.onEnterFrame = loadMeter;
};
MovieClip.prototype.loadMeter = function() {
var i, l, t;
l = this.photo.getBytesLoaded();
t = this.photo.getBytesTotal();
if (t>0 && t == l) {
	this.onEnterFrame = fadeIn;
} else {
	trace(l/t);
}
};
MovieClip.prototype.fadeIn = function() {
if (this.photo._alpha<100-this.fadeSpeed) {
	this.photo._alpha += this.fadeSpeed;
} else {
	this.photo._alpha = 100;
	this.onEnterFrame = null;
}
};
// Actions -----------------------------------------
// these aren't necessary, just an example implementation
this.onKeyDown = function() {
if (Key.getCode() == Key.LEFT) {
	this.changePhoto(-1);
} else if (Key.getCode() == Key.RIGHT) {
	this.changePhoto(1);
}
};
Key.addListener(this);

 

:clap:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.