Ir para conteúdo

POWERED BY:

Arquivado

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

André - Editor

[Resolvido] Despachando um evento no pai que é filho

Recommended Posts

Então galera,

 

criei um SWF, que tem o seguinte código:

 

stop();

import flash.events.MouseEvent;

var contador:uint = 1;
var varMcAtual:String = 'slide0' + contador + '.swf';

// cria uma instância do Loader
var carregador:Loader = new Loader();

//inicia o slide
chama_movie(varMcAtual);

//adiciona os listeners nos botões
bt01.addEventListener(MouseEvent.ROLL_OVER, onBt01Rollover);
bt02.addEventListener(MouseEvent.ROLL_OVER, onBt02Rollover);
bt03.addEventListener(MouseEvent.ROLL_OVER, onBt03Rollover);
bt04.addEventListener(MouseEvent.ROLL_OVER, onBt04Rollover);
bt05.addEventListener(MouseEvent.ROLL_OVER, onBt05Rollover);
bt06.addEventListener(MouseEvent.ROLL_OVER, onBt06Rollover);

function chama_movie(name:String){
	// armazena na variável “arquivo” o nome do swf externo a ser carregado
	var arquivo:String = name;
	// cria uma instância do URLRequest, que carregará o swf armazenado na variável “arquivo”
	var requisicao:URLRequest = new URLRequest(arquivo);
	// Carrega o swf solicitado
	carregador.load(requisicao);
	// Inclui o swf carregado no Stage
	this.mcLoader.addChild(carregador);
	carregador.x = 0;
	carregador.y = 0;
	this.addEventListener("iniciarTrocaSlide", onStartNewSlide);
}

function remove_movie(){
	if (contador <= 5){ //sempre colocar neste valor o número total de slides - 1
		contador++
		varMcAtual = 'slide0'+contador+'.swf';
	}else{
		contador = 1;
		varMcAtual = 'slide0'+contador+'.swf';
	}
	this.mcLoader.removeChild(carregador);
	chama_movie(varMcAtual);
}

function onStartNewSlide(e:Event):void {
    remove_movie();
}

function onBt01Rollover(event:MouseEvent){
	chama_movie('slide01.swf');
	contador = 1;
}

function onBt02Rollover(event:MouseEvent){
	chama_movie('slide02.swf');
	contador = 2;
}

function onBt03Rollover(event:MouseEvent){
	chama_movie('slide03.swf');
	contador = 3;
}

function onBt04Rollover(event:MouseEvent){
	chama_movie('slide04.swf');
	contador = 4;
}

function onBt05Rollover(event:MouseEvent){
	chama_movie('slide05.swf');
	contador = 5;
}

function onBt06Rollover(event:MouseEvent){
	chama_movie('slide06.swf');
	contador = 6;
}

 

Esse SWF por sua vez carrega um outro que tem o seguinte comando:

 

setTimeout(function(){dispatchEvent(new Event("iniciarTrocaSlide", true))},8000);

 

 

ATÉ AQUI TUDO ÓTIMO, tudo funcionando.

 

 

AGORA o problema:

 

Esse meu SWF PAI (o primeiro) eu subo ele para o meu sistema de e-commerce, SÓ QUE, lá ele ficará DENTRO de OUTRO SWF... ou seja, terei:

 

SWF DO SITEMA -> MEU SWF PAI -> MEU SWF FILHO

 

Acontece que aí quando o MEU SWF FILHO dispara aquele evento, ele tentar disparar no SWF DO SITEMA e não no pai, e assim acaba que não dispara nada, já que o eventlistenner e a função do mesmo estão no MEU SWF PAI.

 

Alguém tem idéia de como contornar isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o problema? ele da erro de event? quem escuta esse evento que é despachado?

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

não é bem assim não, se o seu "SWF PAI" carrega o "SWF FILHO", quando este dispara os eventos, o "SWF PAI" consegue sim capturar o evento, isso é independente do "SWF PAI" ter sido carregado ou não

 

o problema ai deve ser outro, mas faz um teste, cria uma outro swf apenas para carregar o "SWF PAI", para simular o "SWF DO SISTEMA", e veja se o problema persiste

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu concordo com o Eder. O problema não parece estar nos eventos. Eu suspeitaria das URLs dos slides. Se você chama "slide01.swf", que é uma URL relativa, o Flash vai buscar esse arquivo no diretório que está sendo exibido e ele vai considerar a URL no browser. Eu não sei como é seu e-commerce, mas muito provavelmente ele deve usar de URLs açucaradas (mod_rewrite, se Apache). Se for esse mesmo o problema, você resolveria usando URLs absolutas, como "http://www.meusite.com.br/swf/slide01.swf" por exemplo.

 

PS.: Já indico a utilização de um arquivo crossdomain.xml para o caso dos seus usuários acessarem seu site sem o "www", por exemplo. Isso, claro, se seu site for acessível desta forma.

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.