Ir para conteúdo

POWERED BY:

Arquivado

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

Janelee

Efeito Alpha em Movieclip

Recommended Posts

Olá colegas.

Estou com o seguinte problema. Quero importar um arquivo xml, em que haja uma transição de fotos automatica com efeito alpha no movieclip.

Gostaria da ajuda de vocês para completar meu código.

 

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 listener:Object = new Object();

mcl.addListener(listener);

xml.load("capa.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 = alvo._yscale = 100;
	
}
No código acima ele importa o xml e deixa do tamanho do stage. Como posso fazer pras proximas fotos irem passando com um efeito alpha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom uma vez que você já pegou as fotos com fotos

 

Então basta você criar um setInterval()

 

Que vá mudando o i quando chegar ao maximo zerar o i novamente...

E colocar um tween de alpha nele... seja com onEnterFrame... para esse efeito... ou com a classe Tween() ou Tweener()

 

Qualquer classe que faça esse tipo de transição.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segundo minha pesquisa, o setInterval deve ser usado com uma função

 

function pausa() {
	trace("aqui coloco minha mensagem");
}
setInterval(pausa, 2000);

porém, nao consegui utilizar no meu código. poderiam me auxiliar no uso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim jane:

var inic = 0;
function pausa() {
alvo.loadMovie(fotos[i]);//Alvo é o movieclip que vai carregar as fotos
if(inic >= fotos.length){
inic = 0
}else{
inic++;
}
}
setInterval(pausa, 2000);// esses 2000 são 2 segundos que é o tempo que ele vai levar para carregar de 1 foto para outra

Algo mais ou menos assim

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

inclui esta função e retornei la pra cima com um return para carregar a imagem.

porem, ao abrir a animação, não aparece nada e só 2 segundos depois a aparece a primeira imagem.

e depois da ultima imagem da um underfined.

Eis o atual código.

 

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 listener:Object = new Object();


mcl.addListener(listener);

xml.load("administracao/capa.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");
    }
	return (pausa);
    //mcl.loadClip(fotos[inic].toString(), alvo);
	//alvo._xscale = alvo._yscale = 100;
	
}

function pausa() {
	alvo.loadMovie(fotos[inic]);//Alvo é o movieclip que vai carregar as fotos
	alvo._xscale = alvo._yscale = 100;
	if(inic >= fotos.length){
		inic = 0
	}else{
		inic++;
	}
}
setInterval(pausa, 2000); // 2 segundos por foto da função

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apos o for completar antes de ir para o else :)

 

Inicie a pausa

escreveno pausa()

 

Que ele vai iniciar sozinho...

 

E desculpe como era só um exemplo :P

não fiz perfeitamente

function pausa() {
        if(inic >= fotos.length){
                inic = 0
        }
        alvo.loadMovie(fotos[inic]);//Alvo é o movieclip que vai carregar as fotos
        alvo._xscale = alvo._yscale = 100;
        inic++;
}

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, fiz tudo certinho, coloquei no ar, mas as imagens nao carregam

 

www.juliernascimento.com.br/capa.swf

 

este é o xml:

<?xml version="1.0" encoding="UTF-8" ?> 
- <slideshow>
- <image>
  <filename>administracao/fotos/IMG_1508.jpg</filename> 
  </image>
- <image>
  <filename>administracao/fotos/IMG_1573.jpg</filename> 
  </image>
- <image>
  <filename>administracao/fotos/IMG_1586.jpg</filename> 
  </image>
- <image>
  <filename>administracao/fotos/IMG_1617.jpg</filename> 
  </image>
- <image>
  <filename>administracao/fotos/capa_dvd_hdc.jpg</filename> 
  </image>
  </slideshow>

e este o .fla

import mx.transitions.Tween;
import mx.transitions.easing.*;

System.useCodepage = true;
var inic = 0;
var xml: XML = new XML();
var listener: Object = new Object();
var fotos:Array = new Array();
var mcl:MovieClipLoader = new MovieClipLoader();

var ball_tween:Tween = new Tween(ball_mc, "_x", Regular.easeIn, 0, 300, 2, true);

mcl.addListener(listener);

xml.load("administracao/capa.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"); 
	}
	if (fotos[inic] != null){
		alvo._alpha = 0;
	   	tempo = setInterval(setAlpha, 100);
		mcl.loadClip(fotos[inic].toString(),alvo);
		alvo._xscale = alvo._yscale = 100;
	}
}

function trocaImagem(){
	
	if (fotos[inic + 1] != null){
		
	   mcl.loadClip(fotos[inic + 1].toString(),alvo);
	   alvo._alpha = 0;
	   tempo = setInterval(setAlpha, 100);
	   //alvo.loadMovie(fotos[inic + 1]);
   	   alvo._xscale = alvo._yscale = 100;
	   if (inic >= fotos.length){ inic = 0; } else { inic++; }
	}
	else {
		inic = -1; }
}
setInterval(trocaImagem,5000); // 2 segundos por foto da função


vai.onPress = function(){
     trocaImagem ();
}


volta.onPress = function(){
	mcl.loadClip(fotos[inic - 1].toString(),alvo);
	inic = inic - 1;
	trocaimagem();

}

function setAlpha(){
    alvo._alpha += 10;
    if(alvo._alpha == 100){
        clearInterval(tempo);
    }
}

P.S: localmente ta funcionando normal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu acho que o problema é que quando você roda na web, tem que levar em conta o tempo de carregamento das imagens

 

como a imagem não carrega em 2 segundo(tempo que você deixou para cada), ela troca para a outra sem aparecer

 

você pode usar o evento onLoaderInit do MovieClipLoader, para saber quando a imagem foi carregada,

 

dentro desse evento você colocaria o setInterval para esperar 2 segundo para dar o efeito de alpha

 

 

testa ai para ver, qualquer coisa é só postar

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloquei o setInterval dentro de um onLoadInit, mas nao deu certo.

é o carregamento das imagens mesmo o problema, pois elas demoram muito a ser carregadas para o stage.

teria como me auxliar no uso do onLoadInit de acordo com meu código?

 

System.useCodepage = true;
var inic = 0;
var xml: XML = new XML();
var listener: Object = new Object();
var fotos:Array = new Array();
var mcl:MovieClipLoader = new MovieClipLoader();

mcl.addListener(listener);

xml.load("administracao/capa.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"); 
	}
	if (fotos[inic] != null){
		alvo._alpha = 0;
	   	tempo = setInterval(setAlpha, 100);
		mcl.loadClip(fotos[inic].toString(),alvo);
		alvo._xscale = alvo._yscale = 100;
	}
}

function trocaImagem(){
	
	if (fotos[inic + 1] != null){
		
	   mcl.loadClip(fotos[inic + 1].toString(),alvo);
	   alvo._alpha = 0;
	   tempo = setInterval(setAlpha, 100);
	   //alvo.loadMovie(fotos[inic + 1]);
   	   alvo._xscale = alvo._yscale = 100;
	   if (inic >= fotos.length){ inic = 0; } else { inic++; }
	}
	else {
		inic = -1; }
}
setInterval(trocaImagem,20000); // 2 segundos por foto da função




vai.onPress = function(){
     trocaImagem ();
}


volta.onPress = function(){
	mcl.loadClip(fotos[inic - 1].toString(),alvo);
	inic = inic - 1;
	trocaimagem();

}

function setAlpha(){
    alvo._alpha += 10;
    if(alvo._alpha == 100){
        clearInterval(tempo);
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

onloadinit se usa assim:

var mcl:MovieClipLoader = new MovieClipLoader();
var mc:MovieClip = this.createEmtpyMovieClip('mc', 1);
var obj:Object = new Object();

mcl.addListener(obj);

mcl.loadClip('minhafoto.jpg', mc);

obj.onloadinit = function(){
    trace('carreguei');
}

Lembrando que onloadinit tem letra maiuscula tanto o L do load como o i de init

 

Abraços

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.