Guigão 0 Denunciar post Postado Outubro 24, 2008 Olá pra todos....sou novo no forum do imasters....estou precisando de uma ajuda...sou iniciante em AS e vi um tutorial sobre vídeo aki no imasters, q por sinal é muito útil e bacana do Lucas Ferreira, mas estou com um grande problema, eu fiz o tutorial e funcionou tudo certo, mas eu gostaria de dar o play de um botão q eu criei e acontece q a barra de progresso não carrega, vou explicar como esta a estrutura da Seekbar, eu tenho um MC instanciado de mcSeek e dentro deste ms eu tenho um tres MCs instanciados, mcSeekFundo, mcProgresso e btSeekBar respectivamente, onde o mcSeekFundo é fundo da seekbar o mcProgresso é a barra q representa o carregemento dos Bytes e por último o btSeekBar é o drag responsável pela progressão do vídeo, então oq está acontecendo é que quando eu coloco o vídeo pra ser chamado direto sem um botão no evento o mcProgresso (responsável pelo carregramento de Bytes) aparece normal e o btSeekBar pode ser rolado por ele normalmente, mas quando eu chamo o evento play de um vídeo qualquer pelo botão q eu criei e instanciado de btVídeos1 o mc progresso fika em seu tamanho de inicio, no caso 1px, e não cresce e com isso quando eu clico no drag (btSeekBar) ele só pode correr nesse pequeno espaço de 1px, eu estava olhando no forum aki do imasters e vi q teve várias dúvidas em relação a esse tutorial mas não encontrei nenhum q resolvesse o meu problema....se alguem puder me ajudar.....fico grato desde já pela oportunidadevou disponibilizar aki os arquivos explicando o meu problema.... AS que está sendo usada no palco: //iniciando projeto... //declarando variáveis... var display:Video; var videoAtual:String = null; var tempoAtual:Number = 0; var isPlay:Boolean = false; //botoes e mcs do player... var mcSeek:MovieClip; var mcVolumeControl:MovieClip; var btPlayPause:MovieClip; var btStop:MovieClip; //criando conexao do stream de video... var netConVideo:NetConnection = new NetConnection(); netConVideo.connect(null); //criando stream para ser usado na conexao... var netStmVideo:NetStream = new NetStream(netConVideo); //som para o controle do volume do player... var somVideo:Sound = new Sound(); //objeto monitor de eventos do video... netStmVideo.onStatus = function(info):Void { //este if server para verificar se o filme ja acabou, rebobinando o mesmo... if (info.code == "NetStream.Buffer.Flush") { netStmVideo.play(videoAtual); stopVideo(); } }; //adicionando o stream ao nosso display no palco... display.attachVideo(netStmVideo); //função responsável por setar o video a ser carregado e tocado... function setVideo(src:String):Void { //caso o comando de tocar seja pra um video já sendo tocado, evita o recarregamento... if (videoAtual != src) { netStmVideo.play(src); //salva numa var, o video atual para posterior verificação... videoAtual = src; } else { //neste caso o video atual e o mesmo do comando, assim só recomeça a tocar... netStmVideo.seek(0); } //configurando player para que esteja tocando... btPlayPause.gotoAndStop(2); isPlay = true; } //função responsável pelo Play/Pause do filme... function PlayPause():Void { //verifica se o video esta tocando, caso sim, pausa... if (isPlay) { //salva o tempo atual para posterior continuação ao apertar em play... //esse menos 10 e para não haver corte e delay no tempo de apertar o botão... tempoAtual = netStmVideo.time-10; netStmVideo.pause(true); isPlay = false; } else { //caso esteja parado continua a tocar da onde parou... isPlay = true; netStmVideo.pause(false); } } //função responsável pelo stop do filme... function stopVideo():Void { //resetando o tempo atual caso esteja em pause... tempoAtual = 0; netStmVideo.seek(0); netStmVideo.pause(true); isPlay = false; //joga o botão de play/pause para o frame do play... btPlayPause.gotoAndStop(1); } //setando ação dos botões... btStop.onRelease = stopVideo; btPlayPause.onRelease = function():Void { //verifica a atual situação para dizer se deve aparecer o play ou pause... if (isPlay && this._currentframe == 2) { this.gotoAndStop(1); } else { this.gotoAndStop(2); } //ativando a função PlayPause()... PlayPause(); }; // //passando ao mcVolume o que ele vai controlar... mcVolumeControl.setVolumeObject(somVideo); //passando ao mcSeek o que ele vai controlar... _root.mcBarra.mcSeek.setVideoStream(netStmVideo); //por fim damos load e play em nosso video... _root.mcBotao.btVideo1.onPress = function() { setVideo("video1.flv"); }; Classe responsável pela SeekBar: import mx.utils.Delegate; class SeekBar extends MovieClip { public var mcSeekFundo:MovieClip; public var mcProgresso:MovieClip; public var btSeekBar:MovieClip; public var totalTime:Number = 0; private var timerProgress:Number; private var timerPlay:Number; private var objVideo:NetStream; function SeekBar(){ } public function setVideoStream(v:NetStream):Void { objVideo = v; objVideo.bt = btSeekBar; objVideo.onMetaData = function(info:Object):Void { this.totalTime = info.duration; this.bt._visible = true; } } private function updateProgress():Void { var bl:Number = objVideo.bytesLoaded; var bt:Number = objVideo.bytesTotal; var p:Number = Math.round((bl/bt) * 100); mcProgresso._xscale = p; if(p >= 100){ clearInterval(timerProgress); } } private function updateTime():Void { var p:Number = Math.max(Math.round((btSeekBar._x/mcProgresso._width) * 100), 0); var nT:Number = (p/100) * objVideo.totalTime; objVideo.seek(nT); objVideo.pause(true); } private function setTimer():Void { updatePlay(); objVideo.pause(false); timerPlay = setInterval(Delegate.create(this, updatePlay), 10); } private function dragBar():Void { if(objVideo.totalTime > 0){ clearInterval(timerPlay); btSeekBar.startDrag(false, 0, 0, (mcProgresso._width-btSeekBar._width), 0); btSeekBar.onMouseMove = Delegate.create(this, updateTime); btSeekBar.setTimer = Delegate.create(this, setTimer); btSeekBar.onRelease = btSeekBar.onReleaseOutside = function():Void { this.stopDrag(); this.onMouseMove(); this.setTimer(); delete this.onMouseMove; } } } private function updatePlay():Void { var p:Number = Math.max(Math.round((objVideo.time/objVideo.totalTime) * 100), 0); var nX:Number = (p/100) * mcSeekFundo._width; btSeekBar._x = nX; } private function onLoad():Void { btSeekBar._x = 0; mcProgresso._x = 0; mcSeekFundo._x = 0; mcProgresso._xscale = 0; btSeekBar._visible = false; timerProgress = setInterval(Delegate.create(this, updateProgress), 20); setTimer(); btSeekBar.onPress = Delegate.create(this, dragBar); } } agora o link com os arquivos q eu criei para exemplo: http://rapidshare.com/files/156903055/arquivos.rar.html Abraço a todos! Compartilhar este post Link para o post Compartilhar em outros sites
Guigão 0 Denunciar post Postado Outubro 25, 2008 Ninguem pra me dar um help? Compartilhar este post Link para o post Compartilhar em outros sites