Adaptei um sisteminha de banner que fiz, aproveitando que ele fazia uma trasição de fotos por fades e usando a classe tween, a intenção é transformar esse banner em um sisteminha de notícias. Ta quase completo, mais não consegui modificar o menu, ele executa uma função que faz com que os botões se repitam e gere números em cada botão, fazendo assim uma sequencia que representam a quantidade de fotos.
Acredito que dê para adequar. Ao invés de chamar os números, chamar o título da notícia. Acho que é no AS abaixo que está a solução..
menubtn.numero_txt.text = i + 1;
Segue o AS completo:
import mx.transitions.*;
import mx.transitions.easing.*;
//Tirando o Scroll
function tirascroll()
{
materiaAlt = materiaCompleta.materia._height;
AlturaMascara2 = mascara2._height;
if (materiaAlt < AlturaMascara2)
{
scrollbar2._visible = false;
}
else
{
scrollbar2._visible = true;
} // end if
} // End of the function
//Aplicando a materia na mascara
materiaCompleta.setMask(mascara2);
setInterval(tirascroll, 100);
//Criando o xml e fazendo ele ignorar espaços em branco
var newsXML:XML = new XML();
newsXML.ignoreWhite = true;
//Quando o xml carregar com sucesso executar as funções
newsXML.onLoad = function(success:Boolean):Void {
//(o xml é carregado na última linha do script)
if (success) {
//Número total de news
n_news = newsXML.firstChild.childNodes.length;
/*O news_atual será o último pois ao executar a função de
proximoNews() ele passará automaticamente para o 1º resultado*/
news_atual = n_news;
//Chamando o primeiro ticker
proximoNews();
//Criando o menu duplicando o quadradinho existente
//Deixando o quadradinho base invisível
menu._visible = false;
//Pegando a posição inicial _x do menu
var menu_y = menu._y;
//Definindo a distância entre os botões
var menu_dist = 25;
//Criando um laço que gerará os botões do menu. Ele executa uma vez para cada ticker.
for (var i:Number = 0; i < n_news; i++) {
//Duplicando o movieclip menu
//O depth é i+5 porque até o depth 4 existem mcs ocupando [fotomc1, fotomc2, legenda_mc, area_mc]
var menubtn:MovieClip = menu.duplicateMovieClip("menu" + i, i + 5);
//Movendo o botão duplicado no eixo x.
menubtn._y = i * menu_dist + menu_y;
//Número do ticker
menubtn.numero = i;
//Texto do botãozinho
menubtn.numero_txt.text = i + 1;
//Quando apertar o botão, mudar para ticker indicado
menubtn.botao.onRelease = function():Void {
//Se o fade tiver terminado
if (fotoIn.position == fotoIn.finish) {
vaiParaTicker(this._parent.numero);
}
};
}
} else {
//Caso dê errado o carregamento, avise
titulo_txt.text = "Ocorreu um erro";
}
};
//Função que passa para o próximo ticker
function proximoNews():Void {
//Se o ticker atual não for o último, aumenta em 1, se for ele vai para 0
news_atual < n_news - 1 ? news_atual++ : news_atual = 0;
insereDados(news_atual);
//Limpando o intervalo de troca de news
clearInterval(ticker_intervalo);
}
//Função que passa para o ticker anterior
function anteriorTicker():Void {
//Mesmo esquema da outra função
news_atual > 0 ? news_atual-- : news_atual = n_news - 1;
insereDados(news_atual);
}
//Função que vai direto para um ticker, é o mesmo esquema das outras
function vaiParaTicker(numero_ticker:Number):Void {
news_atual = numero_ticker;
insereDados(news_atual);
}
//Função que insere os dados vindo do XML no nosso sitema
function insereDados(news_atual:Number):Void {
//Adicionando os nós
titulo_txt.text = newsXML.firstChild.childNodes[news_atual].childNodes[0].firstChild.nodeValue;
dia_txt.text = newsXML.firstChild.childNodes[news_atual].childNodes[1].firstChild.nodeValue;
materiaCompleta.materia_txt.text = newsXML.firstChild.childNodes[news_atual].childNodes[2].firstChild.nodeValue;
carregaFoto(newsXML.firstChild.childNodes[news_atual].childNodes[3].firstChild.nodeValue);
}
//Criando os dois movieclips para carregar as fotos
this.createEmptyMovieClip("fotomc1", 2);
this.createEmptyMovieClip("fotomc2", 1);
//Posicionando os mcs no palco
fotomc1._x = fotomc2._x = area_mc._x;
fotomc1._y = fotomc2._y = area_mc._y;
//Definindo qual está em cima (por causa dos fades)
fotoCima = fotomc1;
//Função que carrega a foto e cria os fades
function carregaFoto(scr:String):Void {
//Parando o fade da foto anterior caso ainda esteja ocorrendo
fotoIn.stop();
//Criando o mcloader
var mclFoto:MovieClipLoader = new MovieClipLoader();
//Carregando a foto
mclFoto.loadClip(scr, fotoCima);
//Quando terminar de carregar a foto
this.onLoadInit = function():Void {
//Fazer o fadeIn com a foto de cima
fotoIn = new Tween(fotoCima, "_x", Elastic.easeOut, 0, 55, 1, true);
fotoIn = TransitionManager.start(fotoCima, {type:Iris, direction:Transition.IN, duration:1, easing:None.easeNone, startPoint:5, shape:Iris.SQUARE});
//Quando terminar a transição de fotos
fotoIn.onMotionFinished = function():Void {
//Pegar a foto de cima e jogar para trás
if (fotoCima == fotomc1) {
//Tirando a foto do fotomc2 que irá para frente
mclFoto.unloadClip(fotomc2);
fotomc1.swapDepths(fotomc2);
//Ao ir pra frente estará preparado para receber outra foto
fotoCima = fotomc2;
} else {
//Mesma coisa, caso seja o fotomc2 que estiver em cima
mclFoto.unloadClip(fotomc1);
fotomc2.swapDepths(fotomc1);
fotoCima = fotomc1;
}
};
};
//Adicionando o listener ao mcloader
mclFoto.addListener(this);
}
//Fazendo com que a area_mc fique invisível
area_mc._visible = false;
//Carregando o XML e dando início ao processo
newsXML.load("noticias.xml");
//
//Tirando menu do botão direito e bloqueando resize
Stage.showMenu = false;
Stage.scaleMode = "noScale";
E pra variar ainda to com problemas com esse scroll que utilizei, gostaria de usar aquele que o Hugo desenvolveu, mas não da certo.
para quem quiser visualizar o arquivo segue abaixo:
http://www.mcoeli.com.br/arquivos/news.zip
Abraços.

Help














