Ir para conteúdo

POWERED BY:

Arquivado

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

neoHaT

[Resolvido] Problema com gerenciador de noticias

Recommended Posts

Olá a todos, estou montando um sistema de noticias que segui um tuto aqui mesma na iMasters...

Tudo funciona, porem... De acordo com a estrutura que eu montei, esta dando alguns conflitos:

 

- As imagens que carregam ficam na frente de qualquer objeto, ele não obedece a ordem das layers.

- Quando passo mouse em outro button ele abaixa a legenda...

- Se eu mascaro todo o objeto (que faz essse cycle) o objeto que pagina (dynamic text - menu) some

 

Deu para entender? Se alguem puder me ajudar... Vo agradecer muito...

 

new mx.transitions.Tween();
new mx.transitions.easing.None.easeNone();
new mx.transitions.easing.Strong.easeOut();

function proximoTicker(){
	
	ticker_atual < n_tickers - 1 ? (ticker_atual++) : (ticker_atual = 0);
	insereDados(ticker_atual);
	clearInterval(ticker_intervalo);
}

function anteriorTicker(){
	
	ticker_atual > 0 ? (ticker_atual--) : (ticker_atual = n_tickers - 1);
	insereDados(ticker_atual);
}

function vaiParaTicker(numero_ticker){
	ticker_atual = numero_ticker;
	insereDados(ticker_atual);
}

function insereDados(ticker_atual){
	
	legenda_mc.titulo_txt.text = tickersXML.firstChild.childNodes[ticker_atual].childNodes[1].firstChild.nodeValue+": "+tickersXML.firstChild.childNodes[ticker_atual].childNodes[0].firstChild.nodeValue;
	legenda_mc.texto_txt.text = tickersXML.firstChild.childNodes[ticker_atual].childNodes[2].firstChild.nodeValue;
	carregaFoto(tickersXML.firstChild.childNodes[ticker_atual].childNodes[3].firstChild.nodeValue);
	area_mc.onRelease = function ()
	{
		getURL(tickersXML.firstChild.childNodes[ticker_atual].childNodes[4].firstChild.nodeValue, tickersXML.firstChild.childNodes[ticker_atual].childNodes[5].firstChild.nodeValue);
	};
}

function carregaFoto(scr){
	
	fotoIn.stop();
	var mclFoto = new MovieClipLoader();
	mclFoto.loadClip(scr,fotoCima);
	
	this.onLoadInit = function (){
		clearInterval(ticker_intervalo);
		ticker_intervalo = setInterval(proximoTicker, 5000);
		fotoIn = new mx.transitions.Tween(fotoCima, "_alpha", mx.transitions.easing.None.easeNone, 0, 100, 1, true);
		fotoIn.onMotionFinished = function (){
			
			if (fotoCima == fotomc1){
				mclFoto.unloadClip(fotomc2);
				fotomc1.swapDepths(fotomc2);
				fotoCima = fotomc2;
			} else {
				mclFoto.unloadClip(fotomc1);
				fotomc2.swapDepths(fotomc1);
				fotoCima = fotomc1;
			}
		};
	};
	mclFoto.addListener(this);
} // End of the function
function desceLegenda()
{
	var _loc1 = new mx.transitions.Tween(legenda_mc, "_y", mx.transitions.easing.Strong.easeOut, legenda_mc._y, leg_esconde, 1.500000E+000, true);
} // End of the function
function sobeLegenda()
{
	var _loc1 = new mx.transitions.Tween(legenda_mc, "_y", mx.transitions.easing.Strong.easeOut, legenda_mc._y, leg_aparece, 1.500000E+000, true);
} // End of the function
var tickersXML = new XML();
tickersXML.ignoreWhite = true;
tickersXML.onLoad = function (success)
{
	if (success)
	{
		n_tickers = tickersXML.firstChild.childNodes.length;
		ticker_atual = n_tickers;
		prox_btn.onRelease = function ()
		{
			if (fotoIn.position == fotoIn.finish)
			{
				proximoTicker();
			} // end if
		};
		ant_btn.onRelease = function ()
		{
			if (fotoIn.position == fotoIn.finish)
			{
				anteriorTicker();
			} // end if
		};
		proximoTicker();
		menu._visible = false;
		var _loc5 = menu._x;
		var _loc4 = 25;
		for (var _loc2 = 0; _loc2 < n_tickers; ++_loc2)
		{
			var _loc3 = menu.duplicateMovieClip("menu" + _loc2, _loc2 + 5);
			_loc3._x = _loc2 * _loc4 + _loc5;
			_loc3.numero = _loc2;
			_loc3.numero_txt.text = _loc2 + 1;
			_loc3.botao.onRelease = function ()
			{
				if (fotoIn.position == fotoIn.finish)
				{
					vaiParaTicker(this._parent.numero);
				} // end if
			};
		} // end of for
	}
	else
	{
		sobeLegenda();
		legenda_mc.titulo_txt.text = "Ocorreu um erro";
		legenda_mc.texto_txt.text = "Por favor entre em contato com a administração";
	} // end else if
};
this.createEmptyMovieClip("fotomc1",2);
this.createEmptyMovieClip("fotomc2",1);
fotomc1._x = fotomc2._x = area_mc._x;
fotomc1._y = fotomc2._y = area_mc._y;
fotoCima = fotomc1;
legenda_mc.swapDepths(3);
area_mc.onRollOver = sobeLegenda;
area_mc.onRollOut = desceLegenda;
area_mc._alpha = 0;
area_mc.swapDepths(4);
var leg_aparece = legenda_mc._y;
var leg_esconde = legenda_mc._y + legenda_mc._height + 1;
legenda_mc._y = leg_esconde;
legenda_mc.setMask(mascara_mc);
tickersXML.load("tickers.xml");

Stage.showMenu = false;
Stage.scaleMode = "noScale";
null;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu erro ta aqui!

 

this.createEmptyMovieClip("fotomc1",2);

this.createEmptyMovieClip("fotomc2",1);

 

Palco é 0 se você colocar 1 ele vai ficar na frente do palco... 2 tbm

 

tem que colocar para baixo de 0

 

this.createEmptyMovieClip("fotomc1",-2);

this.createEmptyMovieClip("fotomc2",-1);

 

E resolverá seu problema ;)

 

Quanto a mascara... qualquer texto dinamico ou não por debaixo de mascara some!

Tem que dar embed importando a font para o flash para poder resolver isso.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu erro ta aqui!

 

this.createEmptyMovieClip("fotomc1",2);

this.createEmptyMovieClip("fotomc2",1);

 

Palco é 0 se você colocar 1 ele vai ficar na frente do palco... 2 tbm

 

tem que colocar para baixo de 0

 

this.createEmptyMovieClip("fotomc1",-2);

this.createEmptyMovieClip("fotomc2",-1);

 

E resolverá seu problema ;)

 

Quanto a mascara... qualquer texto dinamico ou não por debaixo de mascara some!

Tem que dar embed importando a font para o flash para poder resolver isso.

 

Abraços

Muito agradeciso pela ajuda...

Quanto ao importar a font pela embed, poderia me dar um exemplo?

 

Muito obrigado mesmo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

var textFormat:TextFormat = new TextFormat();
textFormat.font = "linkage da fonte importada";

texto.setTextFormat(textFormat);

Para importar a fonte, clique na biblioteca com o botão direito, selecione new Font, de um linkage a ela.

 

E use o código acima :)

Da uma olhadinha no TextFormat() ou algo do genero :P

 

Explica como fazer no proprio help do flash...

 

Ou para não dar problema... me disseram, ainda não pude conferir se da... fazer uma mascara por action ou seja dinamic mask... não da problema com os textos.

 

De uma pesquisada em mask() tbm.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu erro ta aqui!

 

this.createEmptyMovieClip("fotomc1",2);

this.createEmptyMovieClip("fotomc2",1);

 

Palco é 0 se você colocar 1 ele vai ficar na frente do palco... 2 tbm

 

tem que colocar para baixo de 0

 

this.createEmptyMovieClip("fotomc1",-2);

this.createEmptyMovieClip("fotomc2",-1);

 

E resolverá seu problema ;)

 

Quanto a mascara... qualquer texto dinamico ou não por debaixo de mascara some!

Tem que dar embed importando a font para o flash para poder resolver isso.

 

Abraços

Não funcionou :(

Continua por cima das camadas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só por curiosidade... joga o valor -1 e -2 para -1000 e -1001

 

E veja se ainda fica por cima...

Não deveria... ficar não pois eu to colocando abaixo de qualquer item adicionado ao palco colocando o depth negativo

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só por curiosidade... joga o valor -1 e -2 para -1000 e -1001

 

E veja se ainda fica por cima...

Não deveria... ficar não pois eu to colocando abaixo de qualquer item adicionado ao palco colocando o depth negativo

 

Abraços

Ainda não funcionou... Posso te enviar o fla? :/

Não sei mais o que fazer...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a versão do seu flash???

 

Pois aqui ta dando unespected format!

 

Ou seja deve ser CS4 uma vez que eu uso o CS3

Bom mas se você estiver no arquivo criando os MovieClips dinamicamente como to imagiando que ta faça assim:

var fotomc1:MovieClip = _root.createEmptyMovieClip("fotomc1",-2);
var fotomc2:MovieClip = _root.createEmptyMovieClip("fotomc2",-1);

Em vez de usar assim:

this.createEmptyMovieClip("fotomc1",2);

this.createEmptyMovieClip("fotomc2",1);

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caramba, não funcionou :/

Estou arrancando cabelos com a mão...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei :)

 

Agora que fui entender como funciona ;)

 

var _loc3 = menu.duplicateMovieClip("menu" + _loc2, _loc2 + 5); <---------- depth ta positivo afinal você ta dando o valor de _loc2 pra ele que é positivo pq ta seguindo um for

 

Apenas transforme-o em negativo:

var _loc3 = menu.duplicateMovieClip("menu" + _loc2, (_loc2 + 5)*-1);

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei :)

 

Agora que fui entender como funciona ;)

 

var _loc3 = menu.duplicateMovieClip("menu" + _loc2, _loc2 + 5); <---------- depth ta positivo afinal você ta dando o valor de _loc2 pra ele que é positivo pq ta seguindo um for

 

Apenas transforme-o em negativo:

var _loc3 = menu.duplicateMovieClip("menu" + _loc2, (_loc2 + 5)*-1);

 

Abraços

Tenho uma leve impressão que isso não vai funcionar, pois você esta tratando o "menu"...

Mas vou tentar, obrigado!

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu disse, não fazia sentido funcionar.

Meu problema é: o tricker de imagens fica a cima do palco do Flash. Assim ele não obedece a ordem das layers.

Não tinha nada haver com menu.

p.s.: Com isso (*-1) o menu ficou atrás do tricker também ;)

 

Mas obrigado mesmo assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

berseck, me ajuda assim, como eu jogo 1 mc na frente de tudo?

Eu quero deixar 1 mc entre o menu e o trickers.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

neoHaT,

 

Como eu já lhe disse, quando você cria um movie clip com swap negativo ele vai ficar por trás de tudo.

Acontece que você ta criando o MovieClip dentro de um clip... que tem varias camadas e por isso ele ta ficando acima de tudo.

 

Eu lhe falei para criar no _root.createEmptyMovieClip("fotomc1", -1);

 

Quando fiz uma réplica do seu arquivo aqui e fiz um teste com o xml refazendo aquilo que eu achava como ele era...

A imagem sim foi colocada no root e ficou por trás de tudo.

 

Não sei o que você ta fazendo ai não.

 

_root.trickers.createEmptyMovieClip("fotomc1", -1);

 

Colocando assim tbm vai ficar atrás de tudo.

 

Respondendo sua ultima pergunta

 

Crie 3 imagens separadas com os numeros 1, 2 e 3

 

Crie um swf e coloque o código abaixo

var mc1:MovieClip = _root.createEmptyMovieClip("mc1", 1);
var mc2:MovieClip = _root.createEmptyMovieClip("mc2", 3);
var mc3:MovieClip = _root.createEmptyMovieClip("mc3", 2);

mc1._x = 10;
mc1._y = 10;
mc2._x = 20;
mc2._y = 10;
mc3._x = 15;
mc3._y = 15;

E você vai entender o depth como estou dizendo.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora eu entendi, e acho que esta resolvido... Amanha, assim que eu chegar no trabalho vo por em ação e posto os resultados.

Obrigado

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.