Ir para conteúdo

POWERED BY:

Arquivado

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

Web Direta

indicador de execução do seekBar

Recommended Posts

Olá a todos,

 

Fiz um player personalizado, e no evento MOUSE_OUT da área deste player, todo conteúdo deve ser ocultado, e somente é exibido no evento MOUSE_OVER deste player.

 

Coloquei os seguintes botões:

 

PlayPauseButton;

BackButton;

ForwardButton;

SeekBar;

MuteButton e um

Botão personalizado.

 

Tudo funciona perfeitamente, exceto o indicador de tempo da SeekBar, apenas este não funciona, até a barra em si desaparece, mas o indicador, insiste a aparecer.

 

Alguém poderia me dar uma dica, de como faço esse "cara" sumir?

 

 

Desde já agradeço!

 

Um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como foi feito seu código?

 

Pois basta por SeekBar.visible = false no AS 3.0 ou SeekBar._visible = false no AS 2.0

 

Que ele desaparece...

 

Abraços

 

Meu código é simples, trabalho com eventListener adicionando eventos quando o ponteiro do mouse executa over e out, que chama funções que executa um gotoAndPlay, executando um tween de alpha 0 de cada componente do player até 100, e ao contrário, no evento over do mouse.

Todos os componentes do player estão desta forma, inclusive a seekBar, o background da seekBar funciona corretamente, fazendo a transição para exibir e ocultar, mas o indicador de tempo, fica sempre visível, mesmo com a seekBar oculta.

 

Alguma dica?

 

Obrigado!

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que indicador de tempo é esse ao qual você se refere.

 

Pois timer, o reloginho... normalmente não vem junto com o SeekBar você cria ele separado como um campo de texto...

E se esse campo de texto não tiver os mesmos efeitos que você criou para o resto ele não desaparece ;)

 

Tem alguma foto ilustrativa? pois o componente de seek do flash não vem com reloginho até onde eu me lembre

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, não sei o nome correto deste item, é o indicador de progresso da reprodução do vídeo, que vem na seekBar, mas pra não sobrar mais dúvidas estou mandando o link deste item, conforme me orientou, em duas imagens, uma quando ocorre o evento MOUSE_OVER do player, e o outro no MOUSE_OUT.

Perceba que no segundo link, o player não é mostrado, porém o indicador que me refiro (um traço vertical branco), continua visível.

Este traço branco, eu personalizei, mas mesmo o original que é uma espécie de um triângulo preto, também não era ocultado.

 

player mouse_over

player mouse_out

 

Obrigado, berseck pela ajuda!

 

Agora só falta este detalhe...

 

Aquele abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você disse que está colocando alpha pra fazer os componentes desaparecerem, tenta colocar visible=false neste componente quando o alpha chegar a zero.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você disse que está colocando alpha pra fazer os componentes desaparecerem, tenta colocar visible=false neste componente quando o alpha chegar a zero.

 

Opa obrigado blockmonork, assim que vi sua resposta, pensei, o cara me deu a solução, porém, usando a propriedade visible = false; não funcionou, ele continua aparecendo, coloquei até no primeiro frame do intervalo que faz desaparecer o player como um todo, e usando o visible como false, some a seekBar, mas não some o indicador branco de reprodução, fiquei surpreso, porque este indicador está dentro da seekBar, se estou ocultando ela deveria ser ocultada também. Mas, ainda continuo nas tentativas.

 

Toda ajuda é bem vinda.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm você ta falando do indicadosr... de posição da barra o seek mesmo

 

O que você ta procurando é o SeekBarHandler ;)

Mude esse para visible = false tbm ;)

 

Coloque uma instancia no SeekBar e uma instancia dentro do seek bar no SeekBarHandler

 

E ai faça com que esse elementro tenha a propriedade visible on e off

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isso mesmo, mas como não manjo muito dos objetos do flash, eu tinha tentado, ocultar, coloquei nome na instância do indicador, agora, desta vez, até coloquei a seekBar original, porque eu havia formatado o tal do indicador. Não entendi, como você disse pra eu colocar o visible = false.

 

Estou fazendo da seguinte forma:

 

Na seekBar coloquei o nome da instância de bar_seekBar, e dentro deste Movie Clip na camada assets, tem outro MC que é o indicador que está no frame 2, coloquei o nome da instância como ponteiro.

 

Na Scene 1 > 1º frame:

 

function OcultarPlayer(e:MouseEvent): void {
    gotoAndPlay(12) //Para dar o efeito de fade usando o alpha.
    bar_seekBar.ponteiro.visible = false; // Tentativa de ocultar o indicador.
}

Como que ficaria neste cenário?

 

Obrigado, berseck!

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim (criei com um setInterval no lugar do tween motion, tente dessa forma, talvez resolva):

 

var tmp:Number;
var t:Number = 100;
OcultarPlayer();
function OcultarPlayer() {
	tmp = setInterval(this, "reduz", 20);
}
function reduz() {
	bar_seekBar.ponteiro._alpha = t;
	if (t == 0) {
		bar_seekBar.ponteiro._visible = false;	// Tentativa de ocultar o indicador. // NOTE O "_" ANTES DO ATRIBUTO
		clearInterval(tmp);
		t = 100;
	}
	t--;
}

Estranho este comportamento, pois ocultando o componente seekBar, consequentemente deveria ocultar os objetos que estão dentro dele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim (criei com um setInterval no lugar do tween motion, tente dessa forma, talvez resolva):

 

var tmp:Number;
var t:Number = 100;
OcultarPlayer();
function OcultarPlayer() {
	tmp = setInterval(this, "reduz", 20);
}
function reduz() {
	bar_seekBar.ponteiro._alpha = t;
	if (t == 0) {
		bar_seekBar.ponteiro._visible = false;	// Tentativa de ocultar o indicador. // NOTE O "_" ANTES DO ATRIBUTO
		clearInterval(tmp);
		t = 100;
	}
	t--;
}

Estranho este comportamento, pois ocultando o componente seekBar, consequentemente deveria ocultar os objetos que estão dentro dele.

 

 

Obrigado blockmonork, pela resposta, e desculpe pela demora para responder. Estive fora por alguns dias.

 

Coloquei o código porém está dando dois erros, na linha:

 

tmp = setInterval(this, "reduz", 20);

Erro: 1067: Implicit coercion of a value of type nome_arquivo.fla:Main Timeline to an unrelated type Function.

Erro: 1067: Implicit coercion of a value of type String to an unrelated type Number.

 

Realmente, acho estranho este comportamente, de não sumir o ponteiro da seekBar, sendo que ele está dentro dela...

Mas enfim, parece um problema simples, mas até agora não consegui solucioná-lo.

 

Mais uma vez, obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está usando AS3? Pois nunca vi esse tipo de erro.

 

Acho que a forma mais rápida de você obter ajuda, é postar seu .fla e também o código usado nele(para que aqueles que não possuem a mesma versão do Flash que você, terem acesso ao código), explicando com detalhes os objetos do palco (seus nomes de instância, tipo do objeto, etc)

 

abs;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, estou usando o AS3.

É verdade, vai facilitar postando o .fla, e o código, só desculpem o tamanho, é um pouco extenso.

 

Blockmonork, estou postando o link do vídeo com o player personalizado e o arquivo .fla, seguem:

 

video player, personalizado.

.fla do video player

 

Um detalhe, o código que você postou eu coloquei no .fla, porém está comentado, porque estava dando aquele erro que postei.

 

Obrigado blockmonork, obrigado pessoal.

 

PS. Lembrando que o meu objetivo é ocultar o indicador da seekBar no evento MouseOver (um triângulo preto, que indica a posição do tempo do filme.)

 

import flash.events.*;
import fl.video.*;

stop();

var controleAtivo:uint = 0;

video.addEventListener(VideoEvent.PLAYHEAD_UPDATE, MostrarTempoAtual);

tmpTotal.addEventListener(MouseEvent.MOUSE_OVER, ControleOver);
tmpTotal.addEventListener(MouseEvent.MOUSE_OUT, ControleOut);

pclTime.addEventListener(MouseEvent.MOUSE_OVER, ControleOver);
pclTime.addEventListener(MouseEvent.MOUSE_OUT, ControleOut);

bt_muteButton.addEventListener(MouseEvent.MOUSE_OVER, ControleOver);
bt_muteButton.addEventListener(MouseEvent.MOUSE_OUT, ControleOut);

back_player.addEventListener(MouseEvent.MOUSE_OVER, MostrarPlayer);
back_player.addEventListener(MouseEvent.MOUSE_OUT, OcultarPlayer);
bt_playpause.addEventListener(MouseEvent.MOUSE_OVER, ControleOver);
bt_playpause.addEventListener(MouseEvent.MOUSE_OUT, ControleOut);
redimensionar.addEventListener(MouseEvent.CLICK, RedimensionarVideo);

redimensionar.addEventListener(MouseEvent.MOUSE_OVER, ControleOver);
redimensionar.addEventListener(MouseEvent.MOUSE_OUT, ControleOut);

bt_backbutton.addEventListener(MouseEvent.MOUSE_OVER, ControleOver);
bt_backbutton.addEventListener(MouseEvent.MOUSE_OUT, ControleOut);

bt_forwardButton.addEventListener(MouseEvent.MOUSE_OVER, ControleOver);
bt_forwardButton.addEventListener(MouseEvent.MOUSE_OUT, ControleOut);

bar_seekBar.addEventListener(MouseEvent.MOUSE_OVER, ControleOver);
bar_seekBar.addEventListener(MouseEvent.MOUSE_OUT, ControleOut);

bar_seekBar.ponteiro_seekBar.addEventListener(MouseEvent.MOUSE_OVER, ControleOver);
bar_seekBar.ponteiro_seekBar.addEventListener(MouseEvent.MOUSE_OUT, ControleOut);

//inicio código do forum
/*
var tmp:Number;
var t:Number = 100;

//Esta sendo chamado na função OcultarPlayer()
function Ocultar() {
	tmp = setInterval(this, "reduz", 20);
}

function reduz() {
	bar_seekBar.ponteiro._alpha = t;
	if(t == 0) {
		bar_seekBar.ponteiro._visible = false;
		clearInterval(tmp);
		t = 100;
	}
	t--;
}
*/
//fim código do forum

function ControleOver(e:MouseEvent):void {
	controleAtivo = 0;
	gotoAndStop(5);
}

function ControleOut(e:MouseEvent):void {
	controleAtivo = 1;
}

function PlayPause(e:MouseEvent):void {
	video.stop();
}

function MostrarPlayer(e:MouseEvent):void {
	if(controleAtivo == 1)
		gotoAndStop(5);
	else
		gotoAndPlay(2);
	controleAtivo = 0;
	
	var minutosTotal:uint;
	var segundosTotal:uint;
	
	var tempoDoVideo:uint = video.totalTime;
	
	minutosTotal = Math.floor(tempoDoVideo/60);
	segundosTotal = tempoDoVideo%60;
	
	tmpTotal.tempoTotal.text = minutosTotal.toString() + ":" + segundosTotal.toString();
}

function OcultarPlayer(e:MouseEvent):void {
	gotoAndPlay(12);
	//Ocultar();
	//bar_seekBar.ponteiro.visible = false;
	//bar_seekBar.ponteiro_seekBar.visible = false;
	//bar_seekBar.ponteiro_seekBar.alpha = 0;
}

function RedimensionarVideo(e:MouseEvent):void {
	var alturaVideo:uint;
	var larguraVideo:uint;
	
	alturaVideo = video.height;
	larguraVideo = video.width;
	
	if(video.width == 640)
	{
		video.width = larguraVideo / 2;
		video.height = alturaVideo / 2;
	}
	else
	{
		video.width = larguraVideo * 2;
		video.height = alturaVideo * 2;
	}
}

function MostrarTempoAtual(e:VideoEvent):void {
	var segParcial:uint = video.playheadTime%60;
	var segundosParcial:String;
	segundosParcial = segParcial.toString();
	if(segParcial < 10)
		pclTime.parcialTime.text = Math.floor(video.playheadTime/60).toString() + ":0" + segundosParcial.substr(0, 1);
	else
		pclTime.parcialTime.text = Math.floor(video.playheadTime/60).toString() + ":" + segundosParcial.substr(0, 2);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eae galera, alguém tem alguma dica pra me dar, pra ocultar toda a barra, incluindo o indicador? Até agora neste aspecto não tive muito sucesso!

 

Toda dica, será muito bem vinda!

 

Um abraço a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O negocio eu ja disse

Eh você acessar o ponteiro... ele deve ta instanciado já dentro do seu flash... em algum lugar.

 

Sendo assim... você pode simplesmente atribuir um listener a ele... para descobrir se você clicar nele se ele é ele e se ta acessivel.

 

por exemplo

 

SeekBar.SeekBarHandler <------

 

Se isso ai existir e você colocar um listener

SeekBar.SeekBarHandler.addEventListener(MouseEvent.CLICK, sayHi);
function sayHi(e:Event):void{
 trace('hi');
}

Se isso funcionar... significa que ele existe... ai quando você faz a função de clicar de aparecer ou desaparecer ele some.

 

Existem milhões e milhões de tutoriais explicando como faz um... como cria... da uma olhada neles.

Não... não tem só de AS 2.0...

 

Existem de AS 3.0... no kirupa se n me engano tem 1

 

Mas ta em inglês

 

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.