Ir para conteúdo

POWERED BY:

Arquivado

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

Fabio Meira

Video Player AS3

Recommended Posts

Eae pessoal,

 

Estou com uma dúvida sobre um player de vídeo que estou fazendo, os componentes estou inserindo dinamicamente, através do add e remove, EventListener, estou mostrando e ocultando tanto o background do player como os controles, até aí tudo funciona corretamente, mas quando posiciono o mouse sobre os controles (PlayButton, SeekBar, etc...) o evento MOUSE_OVER da forma de background do player é disparado, que oculta tudo, não estou dominando esta lógica para ocultar/exibir todos os componentes corretamente.

 

Segue o código que estou usando:

import flash.system.Capabilities;

fscommand("fullscreen", "true");

var pb_mc:player_background = new player_background();
var play_mc:PlayButton= new PlayButton();
var seek_mc:SeekBar = new SeekBar();

var tmp:Number;
var t:Number = 0;

pb_mc.alpha = t;
pb_mc.addEventListener(MouseEvent.MOUSE_OVER, MostrarPlayer);
pb_mc.addEventListener(MouseEvent.MOUSE_OUT, OcultarPlayer);

//Posicionamento itens do player
InserirItem();
function InserirItem():void {
	
		//resolucaoX = Capabilities.screenResolutionX;
		var resolucaoY:Number = stage.stageHeight;
		pb_mc.x = 0;
		pb_mc.y = resolucaoY - pb_mc.height;
		addChild(pb_mc);
		
		//Inserindo o PlayButton
		play_mc.alpha = t;
		addChild(play_mc);
		
		//Inserindo a SeekBar
		seek_mc.alpha = 0;
		addChild(seek_mc);
}

//Mostrando o Player();
function MostrarPlayer(e:MouseEvent) {
	tmp = setInterval(Exibir, 20);
	//background do player
	pb_mc.removeEventListener(MouseEvent.MOUSE_OVER, MostrarPlayer);
	pb_mc.removeEventListener(MouseEvent.MOUSE_OUT, OcultarPlayer);
	
	//PlayButton
	play_mc.y = 340;
	play_mc.x = 15;
	play_mc.alpha = t;
	
	//SeekBar
	seek_mc.y = 345;
	seek_mc.x = 45
	seek_mc.width = 250;
	seek_mc.alpha = t;
}
function OcultarPlayer(e:MouseEvent) {
	tmp = setInterval(Ocultar, 20);
	pb_mc.removeEventListener(MouseEvent.MOUSE_OUT, OcultarPlayer);
	pb_mc.removeEventListener(MouseEvent.MOUSE_OVER, MostrarPlayer);
}
function Exibir() {
	pb_mc.alpha = (t/100);
	play_mc.alpha = (t/100);
	seek_mc.alpha = (t/100);
	if(t == 100) {
		clearInterval(tmp);
		pb_mc.addEventListener(MouseEvent.MOUSE_OUT, OcultarPlayer);
	}
	t+=10;
}
function Ocultar() {
	pb_mc.alpha = (t/100);
	play_mc.alpha = (t/100);
	seek_mc.alpha = (t/100);

	if(t == 0) {
		clearInterval(tmp);
		pb_mc.addEventListener(MouseEvent.MOUSE_OVER, MostrarPlayer);
	}
	t-=10;
}

Todas as respostas serão bem vindas.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom vou explicar

 

MOUSE_OVER signifca:

Enquanto o mouse estiver sobre o elemento que você colocou essa ação ele vai fazer.

 

Como você tem 3 elementos a barra onde colocou a ação, o play e o stop

Toda vez que você colocar o mouse sobre o play... ele vai detectar um mouse_out da barra... pois você realmente saiu da barra... agora você ta sobre o botão que ta sobre a barra... mas você não está mais com o mouse sobre a barra... e por isso é disparado esse evento.

 

O que você tem que fazer é criar um hitTest que pergunte... o mouse está menor que x% da tela? se sim... aparece a barra se não... a barra some

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado berseck pela resposta, entendi o que você disse, mas não consegui fazer na prática, dei uma pesquisada, mas também não consegui encontrar algo que resolvesse, estou indo por este caminho, não sei se esta correto.

 

stage.addEventListener(MouseEvent.MOUSE_MOVE, ExibirOcultarPlayer);

var tmp:Number;
var t:Number = 0;

function ExibirOcultarPlayer(e:MouseEvent) {
	if(e.stageY > 90) {
		MostrarPlayer();
	}
	else {
		OcultarPlayer();
	}
}
function MostrarPlayer() {
	tmp = setInterval(Exibir, 10);
}

function Exibir() {
	play_mc.alpha = (t/100);
	seek_mc.alpha = (t/100);
	if(t == 100) {
		clearInterval(tmp);
	}
	t+=2;
}

function OcultarPlayer() {
	tmp = setInterval(Ocultar, 10);
}

function Ocultar() {
	play_mc.alpha = (t/100);
	seek_mc.alpha = (t/100);

	if(t == 0) {
		clearInterval(tmp);
	}
	t-=2;
}

Não sei se este caminho é o correto.

 

Todas as dicas e orientações serão bem vindas.

 

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.