Carcleo 4 Denunciar post Postado Março 2, 2012 Olá pessoal. Bom Dia. Tenho 2 problemas com o meu swf: 1) Como faço para que, abrindo uma popup a partir do clique em um botão, o bloqueador de popups não seja ativado? 2) Tenho o codigo abaixo com uma tabela que movimenta via start drag por um botão. Acontece que, quando puxo o botão, o startdrag trabalha bem. Mas, quando solto o mouse, aí o stopdtag diz: TypeError: Error #1009: Não é possível acessar uma propriedade ou um método de uma referência de objeto nula. at infuteis_fla::MainTimeline/stopScroll2()[infuteis_fla.MainTimeline::frame40:39] Segue em anexo o fla e o codigo abaixo: stop(); voltar.addEventListener(MouseEvent.CLICK, volta); var scrollP:Point = new Point(scroller.x,scroller.y); var scrollRange:int = 300; var timelineTotalFrames:int = especificacoes.totalFrames; var rect:Rectangle = new Rectangle(scroller.x,scroller.y,0,scrollRange-scroller.height); especificacoes.stop(); function onDown(e:MouseEvent):void { scroller.startDrag(false, rect ); addEventListener(Event.ENTER_FRAME, onScroll); } function onUp(e:MouseEvent):void { scroller.stopDrag(); if (hasEventListener(Event.ENTER_FRAME)) {removeEventListener(Event.ENTER_FRAME, onScroll); } } function onScroll(e:Event):void { // (scroller.x - scrollP.x) fix if your scroll have a x different from 0 var calcFrame : int = ((scroller.y - scrollP.y) * timelineTotalFrames) / scrollRange; especificacoes.gotoAndStop(calcFrame+1); } scroller.addEventListener(MouseEvent.MOUSE_DOWN, onDown); scroller.addEventListener(MouseEvent.MOUSE_UP, onUp); // release mouse outside scroll stage.addEventListener(MouseEvent.MOUSE_UP, onUp); http://www.bateriasadvance.com.br/infuteis.fla Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Março 3, 2012 Descobri que o problema NÂO estava nesse codigo. Mas sim, em um outro codigo de Drag. Esse: stop(); voltar.addEventListener(MouseEvent.CLICK, volta); var bounds:Rectangle = new Rectangle(scrollMC.x, scrollMC.y, 0, 250); var scrolling:Boolean = false; //Começa o Scroll quando o botão é pressionado e arrastado scrollMC.addEventListener (MouseEvent.MOUSE_DOWN, startScroll); //Para o Scroll quando o botão é solto scrollMC.addEventListener (MouseEvent.MOUSE_UP, stopScroll); //Linha necessaria parta que a linha de cima surta efeito caso este swf esteja carregado externamente. //Obs.: Caso rode este swf sozinho, o mouse nõ soltara do botão quando ele for solatdo e o botão continuará subindo e descendo. //Mas quando for rodando de dentro de um Movie Clip Container de um swf principal este problema não ocorrerá. MovieClip(root).addEventListener (MouseEvent.MOUSE_UP, stopScroll); //Relação entre o Botão e a barra de rolagem atraves da funçao enterHandler. addEventListener (Event.ENTER_FRAME, enterHandler); function scrollUp (e:Event):void { scrollText.scrollV -= 1; trace (scrollText.scrollV); } function scrollDown (e:Event):void { scrollText.scrollV += 1; trace (scrollText.scrollV); } function startScroll (e:Event):void { scrolling = true; scrollMC.startDrag (false,bounds); stage.addEventListener (MouseEvent.MOUSE_UP, stopScroll ); } function stopScroll (e:Event):void { scrolling = false; scrollMC.stopDrag (); stage.removeEventListener (MouseEvent.MOUSE_UP, stopScroll ); } function enterHandler (e:Event):void { if (scrolling == true) { scrollText.scrollV = Math.round(((scrollMC.y - bounds.y)/250)*scrollText.maxScrollV); } } Acontece que, ao chamar a função stopScroll function stopScroll (e:Event):void { scrolling = false; scrollMC.stopDrag (); stage.removeEventListener (MouseEvent.MOUSE_UP, stopScroll ); } Quando execute essa linha: scrollMC.stopDrag (); Estou perdendo o foco no objeto scrollMC. Desta forma, esta travando todo o swf. Como faço para resolver esse problema? Bom, achei outro problema. Esse é o swf Acontece que enquanto eu navego nos menus: O que é, Dicas e Treinamento, tudo vai bem. Porem, quando vou em Especificações Técnicas, que é essa imagem: Ao, rolar o scroll e soltar, após ir para qualquer outro menu o swf já se encontra travado. Segue o as3 desse frame: stop(); voltar.addEventListener(MouseEvent.CLICK, volta); var scrollP:Point = new Point(scroller.x,scroller.y); var scrollRange:int = 300; var timelineTotalFrames:int = especificacoes.totalFrames; var rect:Rectangle = new Rectangle(scroller.x,scroller.y,0,scrollRange-scroller.height); especificacoes.stop(); function onDown(e:MouseEvent):void { scroller.startDrag(false, rect ); addEventListener(Event.ENTER_FRAME, onScroll); } function onUp(e:MouseEvent):void { scroller.stopDrag(); if (hasEventListener(Event.ENTER_FRAME)) {removeEventListener(Event.ENTER_FRAME, onScroll); } } function onScroll(e:Event):void { // (scroller.x - scrollP.x) fix if your scroll have a x different from 0 var calcFrame : int = ((scroller.y - scrollP.y) * timelineTotalFrames) / scrollRange; especificacoes.gotoAndStop(calcFrame+1); } scroller.addEventListener(MouseEvent.MOUSE_DOWN, onDown); scroller.addEventListener(MouseEvent.MOUSE_UP, onUp); // release mouse outside scroll stage.addEventListener(MouseEvent.MOUSE_UP, onUp); O compilador acusa erro nessa função: function onUp(e:MouseEvent):void { scroller.stopDrag(); ---> Nessa linha o compilador trava. if (hasEventListener(Event.ENTER_FRAME)) {removeEventListener(Event.ENTER_FRAME, onScroll); } } Compartilhar este post Link para o post Compartilhar em outros sites