Ir para conteúdo

Arquivado

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

Janelee

[Resolvido] numero de paginas indefinidas

Recommended Posts

Bom, estou com a seguinte duvida.

 

Estou desenvolvendo um site de uma revista. Este site será atualizado pelo cliente, através de um administrador.

Ela vai lá, cadastra as páginas da revista na categoria que ela deseja, gerando um xml. Essas páginas não tem uma quantidade definida, podendo ser em uma atualização 2 paginas e numa próxima, ter 10 páginas.

Eu gostaria de saber como incluir de maneira correta as paginas no flash, pra que ele faça a transição das paginas e reconheça o número de páginas que existem na categoria.

 

Este é o site, se quiserem ver como funciona (ele ainda nao está adaptado para o cliente atualizar).

www.revistaom.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando se lê um arquivo XML

Você vai ter vários dados formulados colodos dentro dele...

 

Com esses dados você vai er um tamanho maximo de arquivo que vai ser usado pelo flash.

 

por exemplo:

xml.firstChild.length; <---------- com isso aqui você vai pegar quantas páginas vai ter...

 

E assim vai poder construir um for... que vai ter como base minima esse valor, seja 10, sejam 1000.

 

E ai dentro desse for você vai colocar um duplucateMovie() que vai criar o numero necessário de arquivos como páginas que vocÊ quer.

Da uma olhada em como funciona o duplicateMovie que você vai entender.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, tentei fazer sem sucesso.

Este é o xml que é gerado.

<?xml version="1.0" encoding="UTF-8" ?>
<indice>
<paginas>
<folha>fotos/1.jpg</folha></paginas>
<paginas>
<folha>fotos/2.jpg</folha></paginas>
<paginas>
<folha>fotos/3.jpg</folha></paginas>
</indice>

eu consigo importar o xml caso nao utilize o for, então a partir daí não sei como proceder.

 

codigo que inclui o xml no movie clip

System.useCodepage = true;
var arquivo:XML = new XML();
arquivo.load("bonequinha.xml");
arquivo.ignoreWhite = true;

arquivo.onLoad = function() {
		//tamanho da imagem
	button._width = 100
		button._height = 135
		//importa as paginas 
	button.loadMovie(this.firstChild.childNodes[0].childNodes[0].childNodes[0]);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom então vamos lá Imagem Postada

 

Assim +/- por cima que deve ser feito seu código

System.useCodepage = true;var xml:XML = new XML();var fotos:Array = new Array();var inic = 0;var mcl:MovieClipLoader = new MovieClipLoader();var alvo:MovieClip = new MovieClip();var listener:Object = new Object();mcl.addListener(listener);xml.load("fotos.xml");xml.ignoreWhite = true;xml.onLoad = function(ok) {	if(ok){		var cn = xml.firstChild.childNodes		for(var i:Number = 0; i < cn.length; i++){			fotos[i] = cn[i].firstChild.childNodes;		}	} else {		trace("Erro no XML");	}	mcl.loadClip(fotos[inic], alvo);}vai.onPress = function(){	inic++;	mcl.loadClip(fotos[inic], alvo);}volta.onPress = function(){	inic--;	mcl.loadClip(fotos[inic], alvo);}
Com o XML que você passou a cima claro Imagem Postada

 

Ai no vai e volta você só tem que definir se maior que 0 não faz nada... se maior que total tbm não faz nada.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Janelee

 

Eu segui o XML que você passou no código a cima

Se seu XML não for aquele procure ver como funciona seu xml

 

Utilizando do trace(xml.firstChild);

 

Assim você vai poder ver o que tem e ir em diante para descobrir o caminho certo

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

é justamente esse o xml gerado. acabei de conferir

 

<indice><paginas><folha>fotos/1.jpg</folha></paginas><paginas><folha>fotos/2.jpg</folha></paginas><paginas><folha>fotos/3.jpg</folha></paginas></indice>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então vamos lá:

<indice> <---------- xml.firstChild
	 <paginas> <--------- xml.firstChild.childNodes[0]
				<folha>fotos/1.jpg</folha> <---------- xml.firstChild.childNodes[0].childNodes
	 </paginas>
	 <paginas> <--------- xml.firstChild.childNodes[1]
				<folha>fotos/2.jpg</folha> <---------- xml.firstChild.childNodes[1].childNodes
	 </paginas>
	 <paginas> <--------- xml.firstChild.childNodes[2]
				<folha>fotos/3.jpg</folha> <---------- xml.firstChild.childNodes[2].childNodes
	 </paginas>
</indice>

Deu pra entender?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu consegui compreender a questão dos nós, mas não consegui utilizar.

Se for mais fácil, eu disponibilizo o .fla e você pode me explicar onde eu posso estar errando.

 

=D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz os testes com o trace e não encontrei

Então, acho que o erro pode estar na comunicação com o .fla.

 

Postei então ele abaixo

om.fla

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloquei em uma nova aplicação, só com o código e o xml e não obtive o resultado.

pode ter a ver com o xml ou é erro do código em AS mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muda lá no código

 

troca isso aqui:

mcl.loadClip(fotos[inic], alvo);

 

por isso aqui:

mcl.loadClip(fotos[inic].toString(), alvo);

 

Ele vai passar a ler as fotos Imagem Postada

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aeee, funcionou. o/

 

E só mais uma dúvida. Tem como, quando eu clicar na página ela aparecer em outro swf em tamanho maior? (porque eu diminui o tamanho real, pra se adaptar a pagina).

 

Código que está até agora.

System.useCodepage = true;
var xml:XML = new XML();
var fotos:Array = new Array();
var inic = 0;
var cont = -1;
var mcl:MovieClipLoader = new MovieClipLoader();
//var alvo:MovieClip = new MovieClip();
var listener:Object = new Object();

mcl.addListener(listener);

xml.load("bonequinha.xml");
xml.ignoreWhite = true;

xml.onLoad = function(ok) {
	if(ok){
		var cn = xml.firstChild.childNodes
		for(var i:Number = 0; i < cn.length; i++){
			fotos[i] = cn[i].firstChild.childNodes;
			cont++;
		}
	} else {
		trace("Erro no XML");
	}
	mcl.loadClip(fotos[inic].toString(), alvo);
	alvo._xscale = 34;
	alvo._yscale = 34;
	trace(inic);
	

}

vai.onPress = function(){
	if (inic<cont){ 
	inic++;
	}
	mcl.loadClip(fotos[inic].toString(), alvo);
	alvo._xscale = 34;
	alvo._yscale = 34;
	
	
}

volta.onPress = function(){
	if (inic>0){ 
		inic--;
	}
	mcl.loadClip(fotos[inic].toString(), alvo);
	alvo._xscale = 34;
	alvo._yscale = 34;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok. me confundi. hueheuheuhe!

eu tentei fazer mais ou menos assim, e não deu certo.

 

no MC eu coloquei o código

on (release) { 
	unloadMovieNum (4); //desabilita a pagina atual
	loadMovieNum ("zoom.swf",100); // chama o swf que carregará a imagem em tamanho real
}
Aí tudo certo, o swf apareceu certinho.

mas não consegui carregar a pagina pra lá. :/

 

p.s: tentei fazer com a instância mas deu erro :x

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá com seu código heim Imagem Postada

System.useCodepage = true;var xml:XML = new XML();var fotos:Array = new Array();var inic = 0;var cont = -1;var mcl:MovieClipLoader = new MovieClipLoader();//var alvo:MovieClip = new MovieClip();var listener:Object = new Object();mcl.addListener(listener);xml.load("bonequinha.xml");xml.ignoreWhite = true;xml.onLoad = function(ok) {	if(ok){		var cn = xml.firstChild.childNodes		for(var i:Number = 0; i < cn.length; i++){			fotos[i] = cn[i].firstChild.childNodes;			cont++;		}	} else {		trace("Erro no XML");	}	mcl.loadClip(fotos[inic].toString(), alvo);	alvo._xscale = 34;	alvo._yscale = 34;	trace(inic);	}vai.onPress = function(){	if (inic<cont){	inic++;	}	mcl.loadClip(fotos[inic].toString(), alvo);	alvo._xscale = 34; // <------------ aqui você diminui o scale	alvo._yscale = 34; // <------------ aqui você diminui o scale}volta.onPress = function(){	if (inic>0){		inic--;	}	mcl.loadClip(fotos[inic].toString(), alvo);	alvo._xscale = 34; // <------------ aqui você diminui o scale	alvo._yscale = 34; // <------------ aqui você diminui o scale}
Ai se você for criar um botão para ficar grande

 

var alvo2:MovieClip = _root.createEmptyMovieClip("alvo2", -10); //<----- crio um movie clip para abrir no palco do sitealvo.onPress = function(){	 mcl.loadClip(fotos[inic].toString(), alvo2);	 alvo2._xscale = alvo2._yscale = 100; // <------ dou o tamanho que deve abrir a foto (100%);}
Só adicionar essa linha de código ai no seu site

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

não aconteceu nada. ficou estatico.

 

mas assim, eu escohi abrir no swf porque o tamanho original vai passar do tamanho do stage.

então no outro swf tem uma mascara com uma barra de rolagem.

se tu entrar em qualquer categoria do site da pra ver certinho como é :x

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.