Ir para conteúdo

POWERED BY:

Arquivado

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

Luis Vagner

Parar leitura do xml

Recommended Posts

Olá pessoal!

Eu estou com duas dúvidas que não estou conseguindo resolver no script abaixo e tenho certeza que é na verdade muito fácil porém estou quebrando a cabeça e não estou conseguindo...

O script lê o xml e vai rodando a imagem e o texto,

1º Eu precisava que ele parasse de passar quando chegar no último item do xml... como faço isso?

2º Como faço para rodar 3 itens do xml, parar carregar um swf externo através do loadmovie e depois que terminar de rodar o swf externo ele voltar a mostrar o restante dos itens do xml?

 

Galera muito obrigado por qualquer tipo de ajuda!

 

 

import mx.transitions.Tween;

import mx.transitions.easing.*;

 

var myShowXML = new XML();

myShowXML.ignoreWhite = true;

myShowXML.load("tv_metra.xml");

 

myShowXML.onLoad = function() {

_root.mySpeed = myShowXML.firstChild.attributes.speed;

_root.myImages = myShowXML.firstChild.childNodes;

_root.myImagesNo = myImages.length;

 

callImages();

};

 

function callImages() {

_root.myMCL = new MovieClipLoader();

_root.myPreloader = new Object();

_root.myMCL.addListener(_root.myPreloader);

 

_root.myClips_array = [];

 

_root.myPreloader.onLoadProgress = function(target) {

_root.descricao.myText_txt.text = "Carregando.. "+_root.myClips_array.length+"/"+_root.myImagesNo+" Completado";

};

 

 

_root.myPreloader.onLoadComplete = function(target) {

_root.myClips_array.push(target);

target._alpha = 0;

 

if (_root.myClips_array.length == _root.myImagesNo) {

_root.target_mc = -1;

moveSlide();

 

myShowInt = setInterval(moveSlide, (_root.mySpeed*1000)+1000);

}

 

 

};

 

for (i=0; i<_root.myImagesNo; i++) {

temp_url = _root.myImages.attributes.url;

temp_mc = myContainer_mc.createEmptyMovieClip(i, myContainer_mc.getNextHighestDepth());

 

_root.myMCL.loadClip(temp_url,temp_mc);

}

 

 

}

 

 

function moveSlide() {

current_mc = _root.myClips_array[_root.target_mc];

new Tween(current_mc, "_alpha", Strong.easeOut, 100, 0, 1, true);

_root.logo.play();

_root.base.play();

 

_root.target_mc++;

 

if (_root.target_mc>=_root.myImagesNo) {

_root.target_mc = 0;

_root.logo.gotoAndStop(0);

_root.base.gotoAndStop(0);

}

 

_root.descricao.myText_txt.text = _root.myImages[target_mc].attributes.desc;

next_mc = _root.myClips_array[_root.target_mc];

new Tween(next_mc, "_alpha", Strong.easeOut, 0, 100, 1, true);

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem um intervalo com o nome de myShowInt que chama a função moveSlide a cada x segundos, dentro da função ele tem um if que verifica se chegou no último item do seu xml, e faz ele voltar ao começo. Como você quer que ele pare o intervelo ao lugar de "loopar", você precisa usar o clear Interval, dessa forma:

 

if (_root.target_mc>=_root.myImagesNo) {

clearInterval(myShowInt);

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem um intervalo com o nome de myShowInt que chama a função moveSlide a cada x segundos, dentro da função ele tem um if que verifica se chegou no último item do seu xml, e faz ele voltar ao começo. Como você quer que ele pare o intervelo ao lugar de "loopar", você precisa usar o clear Interval, dessa forma:

 

if (_root.target_mc>=_root.myImagesNo) {

clearInterval(myShowInt);

}

 

Em primeiro, gostaria de lhe agradecer pela sua atenção e por tomar seu tempo...

 

Meu amigo, era lá mesmo... só que eu agora fiz o seguinte, eu coloquei

 

if (_root.target_mc>=_root.myImagesNo) {

gotoAndStop(2);

}

 

E no frame 2 coloquei

 

stop();

 

this.createEmptyMovieClip("DataHora",1);

DataHora.loadMovie("DataHora.swf");

 

function voltar(){

_root.gotoAndStop(1);

}

 

setInterval(voltar(),1000000);

 

SÓ QUE DESSA FORMA ELA FAZ ISO SÓ NO FINAL DA LEITURA DE TODOS OS ITENS DO XML,

VAMOS SUPOR QUE EU TENHA QUE PASSAR 3 ITENS DO XML DEPOIS IR PARA O FRAME 2 PARA CARREGAR O SWF (DataHora.swf) COMO ACIMA, DEPOIS RETORNAR PARA O FRAMA 1 E FAZER ISSO ACABAR OS ITENS DO XML?

 

MAIS UMA VEZ MUITO OBRIGADO!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você copiou o código? Precisa entender o código que está trabalhando. Você te ma variável _root.target_mc para controlar isso, se você quer que no terceiro item vá para o frame 2, um if simples resolveria isso, fazendo if(_root.target_mc == 2){ clearInterval e o restante do código }, coloquei 2 pois a contagem dos nós começa do zero, ficando 0, 1, 2... com if simples você resolve a maioria das coisas que precisa.

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.