Ir para conteúdo

POWERED BY:

Arquivado

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

crmdea

Como adicionar botões anterior e próximo nesse código

Recommended Posts

Eae galera to com uma dificuldade muito grande para adicionar o botao anterior e proximo nesse codigo, para que ele mostre a imagem que foi vista antes e depois.

tentei fazer mas o botao nao aparece mesmo eu colocando a layer do botao como primeira. Espero que possam me ajudar.

import fl.containers.UILoader;
import caurina.transitions.*;

//---------loading the external xml file-------
var urlRequest:URLRequest = new URLRequest("bpics.xml");
var urlLoader:URLLoader = new URLLoader();
var myXML:XML = new XML();
var xmlList:XMLList;
myXML.ignoreWhitespace = true;
urlLoader.addEventListener(Event.COMPLETE,fileLoaded);
urlLoader.load(urlRequest);
//--------holds the paths to the thumbnails-------
var arrayURL:Array = new Array();
//--------holds the paths to the big photos-------
var arrayName:Array = new Array();
//--------holds the thumbnail objects-------
var holderArray:Array = new Array();
//--------represents the number of collumns-------
var nrColumns:uint = 5;
//-------represents the container of our gallery
var sprite:Sprite = new Sprite();
addChild(sprite);
var thumb:Thumbnail;
//-------- the thumbnails container-------
var thumbsHolder:Sprite = new Sprite();
sprite.addChild(thumbsHolder);
//-------- the photoLoader container-------
var loaderHolder:Sprite = new Sprite();
//loaderHolder.graphics.beginFill(0x000000,1);
//loaderHolder.graphics.drawRect(0,0,570,330);
//loaderHolder.graphics.endFill();
loaderHolder.x = 0;
loaderHolder.alpha = 100;
loaderHolder.y = 0;
sprite.addChild(loaderHolder);
//-------- loads the big photo-------
var photoLoader:UILoader = new UILoader();
photoLoader.width = 577;
photoLoader.height = 300;
photoLoader.y = 0;
photoLoader.x = 0;
photoLoader.buttonMode = true;
photoLoader.addEventListener(MouseEvent.CLICK,onClickBack);
loaderHolder.addChild(photoLoader);

/* we loop through the xml file
populate the arrayURL, arrayName and position the thumbnalis*/
function fileLoaded(event:Event):void {
	myXML = XML(event.target.data);
	xmlList = myXML.children();
	for (var i:int=0; i<xmlList.length(); i++) {
		var picURL:String = xmlList[i].url;
		var picName:String = xmlList[i].big_url;
		arrayURL.push(picURL);
		arrayName.push(picName);
		holderArray[i] = new Thumbnail(arrayURL[i],i,arrayName[i]);
		holderArray[i].addEventListener(MouseEvent.CLICK,onClick);
		holderArray[i].name = arrayName[i];
		holderArray[i].buttonMode = true;
		//if (i<nrColumns) {
			holderArray[i].y = 313;
			holderArray[i].x = i*65+10;
		//} else {
			//holderArray[i].y = holderArray[i-nrColumns].y+110;
			//holderArray[i].x = holderArray[i-nrColumns].x;
		//}
		
		
		
		
		
		
		thumbsHolder.addChild(holderArray[i]);
	}
	showPicture(holderArray[0].name);
}
//----handles the Click event added to the thumbnails--
function onClick(event:MouseEvent):void {
	showPicture(event.currentTarget.name);
}

function showPicture(source:String):void
{
	photoLoader.source = source;
	loaderHolder.alpha = 0;
	//Tweener.addTween(thumbsHolder, {x:0, time:1, transition:"easeInLinear"});
	Tweener.addTween(loaderHolder, {x:0, time:1, transition:"easeInLinear"});
	Tweener.addTween(thumbsHolder, {alpha:1, time:1, transition:"linear"});
	Tweener.addTween(loaderHolder, {alpha:1, time:1, delay:1, transition:"linear"});	
}

//----handles the Click event added to the photoLoader----
function onClickBack(event:MouseEvent):void {
	//Tweener.addTween(thumbsHolder, {x:0, time:1, transition:"easeInLinear"});
	Tweener.addTween(loaderHolder, {x:0, time:1, transition:"easeInLinear"});
	Tweener.addTween(thumbsHolder, {alpha:1, time:2, transition:"linear"});
	Tweener.addTween(loaderHolder, {alpha:0, time:2, transition:"linear"});
}

thumbsHolder.mask = maskk2;
photoLoader.mask = maskk;

addEventListener(Event.ENTER_FRAME, enterFrameHandler);
function enterFrameHandler(event:Event):void {
	var placing:int = thumbsHolder.x;
	if ((placing + (300-mouseX)/10) >= -1*thumbsHolder.width+620) 
	{
		//Tweener.addTween(thumbsHolder, {x:(thumbsHolder.x + (300-mouseX)/5), time:0.2, transition:"linear"});
       placing = placing + (300-mouseX)/5; 
    } else {
		placing = -1*thumbsHolder.width+620
	}
	
	if ((placing + (300-mouseX)/10) < 30) 
	{
		
     placing = placing + (300-mouseX)/5; 
    } else {
		placing = 30
	}
	
	Tweener.addTween(thumbsHolder, {x:placing, time:1, transition:"easeOutLinear"});
}

Esse acima eh o codigo dai adicionei isso:
function ant (Event:MouseEvent){
	if (i>0){
		showPicture(holderArray[i-1].name);
	}
	else {
		showPicture(holderArray[0].name);
	}
}
function prox (Event:MouseEvent){
	if (i>0){
		showPicture(holderArray[i+1].name);
	}
	else {
		showPicture(holderArray[0].name);
	}
}

this.anterior.addEventListener(MouseEvent.CLICK, ant);
this.proximo.addEventListener(MouseEvent.CLICK, prox);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esses botões já estão no palco antes de compilar o SWF? você deve ter adicionao algum objeto na frente deles durante o tempo de execução no seu script.

 

Coloca esse script em cada um e vê se funciona:

setChildIndex(btnAnterior, numChildren-1);
setChildIndex(btnProximo, numChildren-1);
Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

ow cara obrigadao voce curou um problema agora ele aparece e esse negoço ai de definir -1 nao sabia vlws!

 

mas tipo quando clico no botao que criei com ele diz isso:

 

ReferenceError: Error #1065: Variable i is not defined.

at index11_fla::gallery_host_8/prox()

 

e eu ajeitei a funcao prox que tava errada tambem pra

function prox (Event:MouseEvent){
if (i==13){
showPicture(holderArray[0].name);
}
else {
showPicture(holderArray[i+1].name);
}
}
mas ainda sim ele da erro. 13 porque a quantidade de fotos totais sao 14

 

demorei pra responder porque a faculdade ficou bronca dai so agora aliviou mas obrigadao ai espero que possa me ajudar!

=DD

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei colocar o final

function ant (Event:MouseEvent){
if (i>0){
showPicture(holderArray[i-1].name);
}
else if (i==0) {
showPicture(holderArray[0].name);
}
}
function prox (Event:MouseEvent){
if (i==13){
showPicture(holderArray[0].name);
}
else {
showPicture(holderArray[i+1].name);
}
}


setChildIndex(anterior, numChildren-1);
setChildIndex(proximo, numChildren-1);

anterior.addEventListener(MouseEvent.CLICK, ant);
proximo.addEventListener(MouseEvent.CLICK, prox);

 

dentro da funcao fileLoaded

 

o botao anterior carrega a ultima foto do array (porem so carrega ela toda vez que ele eh apertado) e o proximo da erro O.o

 

TypeError: Error #1010: A term is undefined and has no properties.

at MethodInfo-560()

 

 

 

// acho que nao tem nada haver isso mas foir a unica maneira que fiz da funcao ant funcionar quase* ahuahuahu mas a proximo nao funcionou nada

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui colcoando dentro da funcao fileLoaded carregar o anterior e o proximo porém eles so carregam a primeira condiçao sempre como se nao mudasse o holderArray, tipo eu clico proximo e ele sempre vai aperecer o proximo do array inicializado (que eh zero) e do anterior ele sempre vai aparecer o anterior do incializado(que eh o slot 13), queria saber porque o codigo nao atualiza o slot do array utilizado na tela =/

 

tipo como eu posso colocar um looping

 

pra que toda vez que clicar no proximo ou anterior ele reconheça o slot do array que esta sendo exibido e mostre o proximo ou o anterior?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz um modelo que deu certo em cima do seu script, ai você muda os nomes das funções:

 

Na função onClick você chama a função puxaPosicaoArray(evt).

 

Depois da função OnClickBack você coloca esse script:

function puxaPosicaoArray(evt:MouseEvent):int
{	
        // eu fiz meio rápido pq estou numa correria, por isso como eu fiz 8 fotos, coloquei o caminho da imagem. Mas você pode fazer dinacamente sem precisar mudar
        o nome da imagem pegando a array das imagens
	if(evt.currentTarget.name !="big_pics/img_8.jpg") 
	{
		//aqui eu sei qual indice da foto foi clicada
		for(var a:int = 0; a < aFotoG.length; a++)
		{
			// Aqui faço o nomo referente ao índice ser igual ao target clicado.
			if(aFotoG[a] == evt.currentTarget.name  )
			{
				
				// se não acrescentar +1 no 'a' a foto que já está na tela aparecerá de novo se clicar no próximo, 
				// pois o índice continua o mesmo.
				posArray = a+1;
				//return posArray;
			}
		}
	} 
	// essa condição é pq quando clica na última thumb e avança ele pula uma imagem.
	else if(evt.currentTarget.name !="big_pics/img_7.jpg")
	{
		//pra não pular a imagem posArray = apenas 'a' e não 'a+1'.
		posArray = a;
		//return posArray;
	}
	else
	{
		posArray = a+1;
		//return posArray;
	}
	return posArray;
}

function proximaFoto(evt:MouseEvent):void
{
	// Depois que roda todas as imagens e voltar pra primeira, o trace da primeira fica como e não como deveria('0')
	// Isso acontece pq na função onClick eu estou passando "posArray = 'a+1'", ou seja, ele soma 7 (ultima indice
	// do array de imagens +1).
	trace("posA " + posArray)	
	
	if(posicaoInicial == true)
	{
		posArray += 2;	
		posicaoInicial = false;
	}
	if(posArray > 7 )
	{
		posArray = 1;		
		carregaFotoG.source = aFotoG[0];
	} else
	{
		carregaFotoG.source = aFotoG[posArray];
		posArray++;
		
	}
	
}

var posicaoInicial:Boolean = false;
function voltaFoto(evt:MouseEvent):void
{
	if(posicaoInicial == false)
	{
		posArray -= 2;	
		posicaoInicial = true;
	}

	trace("posA " + (posArray))	
	if(posArray < 0 )
	{
		trace("zero")
		posArray = 6;		
		//posicaoInicial = false;
		carregaFotoG.source = aFotoG[7];
	} else
	{
		carregaFotoG.source = aFotoG[posArray];
		posArray--;
		
	}
}
Me fala se deu certo. Se não conseguir entender o script me diz que te explico.

 

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá colegas, tudo bem.

Passei apenas para dar uma sugestão, olha como fica legal usar a tag code , adiciona identação e cor, facilita muito a visualização. É só clicar no ícone <> e postar o código entre code e /code.

 

Um trecho de um action qualquer com tag, bem melhor ok:

 

btn_desce.addEventListener(MouseEvent.ROLL_OVER, desce);
btn_desce.addEventListener(MouseEvent.ROLL_OUT, desceRemove);

function desce(evento:MouseEvent):void{
	mc_quadrado.addEventListener(Event.ENTER_FRAME, desceFull);
}

function desceFull(evento:Event):void{
	mc_quadrado.nextFrame();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa, eu nunca soube como colocava cor aqui. Mas também acho que nem procurei direito. http://forum.imasters.com.br/public/style_emoticons/default/natal_laugh.gif

 

Obrigado pela dica Elektra.

 

Abraços,

 

Na paz, eu também não acertei na primeira, nem na segunda.

Só dei um toque porque é grátis, e dá um certo charme.

 

Abraços http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom galera tentei muito adicionar dois botões: um para mostrar a imagem que vem anterior da selecionada(mostrada na tela) e um para mostrar a img que vem depois da selecionada(que esta sendo atualmente mostrada na tela), mas nao consegui de forma alguma sempre dando algum problema.

 

Alguém sabe uma solução pelo menos um jeito que possa dar certo? que isso me ajudaria bastante outras idéias pra desenvolver isso porque as minhas tão se acabando. Vlws!!

 

segue o código

 

import fl.containers.UILoader;
import caurina.transitions.*;

//---------loading the external xml file-------
var urlRequest:URLRequest = new URLRequest("bpics.xml");
var urlLoader:URLLoader = new URLLoader();
var myXML:XML = new XML();
var xmlList:XMLList;
myXML.ignoreWhitespace = true;
urlLoader.addEventListener(Event.COMPLETE,fileLoaded);
urlLoader.load(urlRequest);
//--------holds the paths to the thumbnails-------
var arrayURL:Array = new Array();
//--------holds the paths to the big photos-------
var arrayName:Array = new Array();
//--------holds the thumbnail objects-------
var holderArray:Array = new Array();
//--------represents the number of collumns-------
var nrColumns:uint = 5;
//-------represents the container of our gallery
var sprite:Sprite = new Sprite();
addChild(sprite);
var thumb:Thumbnail;
//-------- the thumbnails container-------
var thumbsHolder:Sprite = new Sprite();
sprite.addChild(thumbsHolder);
//-------- the photoLoader container-------
var loaderHolder:Sprite = new Sprite();
//loaderHolder.graphics.beginFill(0x000000,1);
//loaderHolder.graphics.drawRect(0,0,570,330);
//loaderHolder.graphics.endFill();
loaderHolder.x = 0;
loaderHolder.alpha = 100;
loaderHolder.y = 0;
sprite.addChild(loaderHolder);
//-------- loads the big photo-------
var photoLoader:UILoader = new UILoader();
photoLoader.width = 577;
photoLoader.height = 300;
photoLoader.y = 0;
photoLoader.x = 0;
photoLoader.buttonMode = true;
photoLoader.addEventListener(MouseEvent.CLICK,onClickBack);
loaderHolder.addChild(photoLoader);

/* we loop through the xml file
populate the arrayURL, arrayName and position the thumbnalis*/
function fileLoaded(event:Event):void {
	myXML = XML(event.target.data);
	xmlList = myXML.children();
	for (var i:int=0; i<xmlList.length(); i++) {
		var picURL:String = xmlList[i].url;
		var picName:String = xmlList[i].big_url;
		arrayURL.push(picURL);
		arrayName.push(picName);
		holderArray[i] = new Thumbnail(arrayURL[i],i,arrayName[i]);
		holderArray[i].addEventListener(MouseEvent.CLICK,onClick);
		holderArray[i].name = arrayName[i];
		holderArray[i].buttonMode = true;
		//if (i<nrColumns) {
			holderArray[i].y = 313;
			holderArray[i].x = i*65+10;
		//} else {
			//holderArray[i].y = holderArray[i-nrColumns].y+110;
			//holderArray[i].x = holderArray[i-nrColumns].x;
		//}
		thumbsHolder.addChild(holderArray[i]);
	}
	showPicture(holderArray[0].name);
}
//----handles the Click event added to the thumbnails--
function onClick(event:MouseEvent):void {
	showPicture(event.currentTarget.name);
}

function showPicture(source:String):void
{
	photoLoader.source = source;
	loaderHolder.alpha = 0;
	//Tweener.addTween(thumbsHolder, {x:0, time:1, transition:"easeInLinear"});
	Tweener.addTween(loaderHolder, {x:0, time:1, transition:"easeInLinear"});
	Tweener.addTween(thumbsHolder, {alpha:1, time:1, transition:"linear"});
	Tweener.addTween(loaderHolder, {alpha:1, time:1, delay:1, transition:"linear"});	
}

//----handles the Click event added to the photoLoader----
function onClickBack(event:MouseEvent):void {
	//Tweener.addTween(thumbsHolder, {x:0, time:1, transition:"easeInLinear"});
	Tweener.addTween(loaderHolder, {x:0, time:1, transition:"easeInLinear"});
	Tweener.addTween(thumbsHolder, {alpha:1, time:2, transition:"linear"});
	Tweener.addTween(loaderHolder, {alpha:0, time:2, transition:"linear"});
}

thumbsHolder.mask = maskk2;
photoLoader.mask = maskk;

addEventListener(Event.ENTER_FRAME, enterFrameHandler);
function enterFrameHandler(event:Event):void {
	var placing:int = thumbsHolder.x;
	if ((placing + (300-mouseX)/10) >= -1*thumbsHolder.width+620) 
	{
		//Tweener.addTween(thumbsHolder, {x:(thumbsHolder.x + (300-mouseX)/5), time:0.2, transition:"linear"});
       placing = placing + (300-mouseX)/5; 
    } else {
		placing = -1*thumbsHolder.width+620
	}
	
	if ((placing + (300-mouseX)/10) < 30) 
	{
		
     placing = placing + (300-mouseX)/5; 
    } else {
		placing = 30
	}
	
	Tweener.addTween(thumbsHolder, {x:placing, time:1, transition:"easeOutLinear"});
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

ve se te ajuda... vou postar um codigo de um exercicio que tenho aki

 

//Variaveis

var carrosRequest:URLRequest = new URLRequest
var carrosLoader:URLLoader = new URLLoader
var carrosXML:XML
var contador:int = 0
var fotoRequest:URLRequest = new URLRequest()
var fotoLoader:Loader = new Loader()
var tamanho:uint = 0

//Eventos
carrosLoader.addEventListener(Event.COMPLETE, carregou)
next_btn.addEventListener(MouseEvent.CLICK, avanca)
prev_btn.addEventListener(MouseEvent.CLICK, volta)

//Funções
function carregou (e:Event) {
	carrosXML = new XML (carrosLoader.data)
	//Alimenta a var tamanho com a contagem de nós de XML
	tamanho = carrosXML.*.length()
	//Qdo tiver carregado o XML executa a função
	exibeConteudo()
}


function exibeConteudo () {
	nome_txt.text = carrosXML .*[ contador ].@nome
	valor_txt.text = carrosXML.* [ contador ].@valor
	atual_txt.text = String (contador +1)
	//
	fotoRequest.url = "carros/" + carrosXML.* [ contador ].@foto
	fotoLoader.load(fotoRequest)
	
}

function avanca (e:MouseEvent) {
	contador ++
	if (contador == tamanho) contador = 0
	//	
	exibeConteudo()
}

function volta (e:MouseEvent) {
	contador --
	if (contador == -1) contador = tamanho -1
	//
	exibeConteudo()
}


///Inicialização
addChild (fotoLoader)
//
fotoLoader.x = 30
fotoLoader.y = 130

//

carrosRequest.url = "carros.xml"
carrosLoader.load(carrosRequest)

Compartilhar este post


Link para o post
Compartilhar em outros sites

mais eu acho que você ta querendo um scroll de anterior e prox. certo ??

seria uma galeria dimanica com bts > oooooooo < certo ?

 

Se for...

 

var avanca:Boolean
var volta:Boolean
var velocidade:Number = 0

stage.addEventListener(MouseEvent.MOUSE_DOWN, press)
stage.addEventListener(MouseEvent.MOUSE_UP, release)
stage.addEventListener(Event.ENTER_FRAME, loop)

function press (evt:MouseEvent) {
    switch (evt.target) {
        case bt_prev: // são os nomes dos meu bts
            avanca = true
			break
        case bt_next:
            volta = true
			break
    }
}
function release (evt:MouseEvent) {
    avanca = volta = false
}
function loop (evt:Event) {
	if (avanca && velocidade <= 10) {
			velocidade ++
	}
	if (volta && velocidade >= - 10) {
			velocidade --
	}
	if ( !avanca && !volta && velocidade !=0 ) {
        if ( velocidade > 0 ) velocidade --
        if ( velocidade < 0 ) velocidade ++
    }
	camisetas_mc.x += velocidade;
	//
	if (Math.round(camisetas_mc.x) >= 494) {
		camisetas_mc.x = 494; // o x da mascara
	}
	if (Math.round(camisetas_mc.x) <= Math.round(494-(camisetas_mc.width-444))) {
		camisetas_mc.x = Math.round(494-(camisetas_mc.width-444)); /// width é o tamanho da mascara
	}
}
function resetSeta () {
	camisetas_mc.x = 494
}

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.