Grubert 0 Denunciar post Postado Dezembro 1, 2009 Olá pessoal, tudo certo? Seguinte, estou desenvolvendo um projeto, onde o usuário tem uma série de vídeos, e uma tela default. A principio, quando ele clica alguma tecla qualquer (Precisa ser uma tecla qualquer, pois ligamos um sensor de movimento no teclado), a tela de default carrega um vídeo aleatório, que é tocado, e ao final volta para a tela default. Até ai tudo bem, o código para isso é este aqui: var keyListener:Object = new Object(); keyListener.onKeyDown = function() { trace ("tecla"); gotoAndPlay ("default", 1); }; Key.addListener(keyListener); Cada vídeo está em uma cena diferente, e a página default também. O problema é que, o sensor é sensível, então quando alguém passa na frente, ao invés de apertar apenas uma tecla, ele aperta várias, e isso faz com que os vídeos fiquem pulando, pois coloquei esse código no primeiro KeyFrame de cada cena, pois a intenção é com que o usuário assista um pouco, e assim que outro passar, interrompa o vídeo que o primeiro estava vendo. Mas o problema é que preciso colocar um delay, um intervalo para essas teclas funcionarem, de pelo menos 5 segundos entre cada clique. Tentei utilizar setTimeOut mas não deu muito certo, e também criei uma variavel Trava=true, que começa como true, e depois que o primeiro clique é ativado, ela fica false e desativa a função do botão, com um cleanTimeOut de 5s, mas também não deu muito certo. O problema é que essas soluções até poderiam dar certo se eu conseguisse programar certinho, mas estou com muita dificuldade pessoal. Agradeço desde já. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Dezembro 1, 2009 Coloque um if if (Key.getCode() != null) { //código } Exemplo de key //Crio o campo de texto para mostrar a tecla precionada var campo:TextField = this.createTextField('campo', this.getNextHighestDepth(), Stage.width/2 - 125, Stage.height/2, 250, 50); //Crio o objeto que vai dizer qual tecla foi pressionada var keyListener:Object = new Object(); //Crio a função que mostra quando a tecla foi pressionada keyListener.onKeyDown = function() { campo.text = "DOWN -> Código: "+Key.getCode()+"\tASCII: "+Key.getAscii()+"\tKey: "+chr(Key.getAscii()); }; //Crio a função de quando a tecla foi solta keyListener.onKeyUp = function() { campo.text = "UP -> Código: "+Key.getCode()+"\tASCII: "+Key.getAscii()+"\tKey: "+chr(Key.getAscii()); }; Key.addListener(keyListener); Ou seja se você der um if //Crio o objeto que vai dizer qual tecla foi pressionada var keyListener:Object = new Object(); //Crio a função que mostra quando a tecla foi pressionada e verifico se existe a tecla keyListener.onKeyDown = function() { if(Key.getCode() != null){ gotoAndPlay('default', 1); }; Key.addListener(keyListener); Compartilhar este post Link para o post Compartilhar em outros sites
Grubert 0 Denunciar post Postado Dezembro 1, 2009 Valeu pelo toque Berserck. Mas com esse código eu consigo criar um intervalo de tempo de uma tecla para outra? Farei o teste e digo o que acontece. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Dezembro 1, 2009 Não Ao você colocar um listener em uma tecla não tem como colocar um intervalo A não ser que você remova o listener quando clicar... coloque um intervalo para re colocar o listener Ai sim vai funcionar. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Grubert 0 Denunciar post Postado Dezembro 1, 2009 Então ficaria tipo assim? var keyListener:Object = new Object(); keyListener.onKeyDown = function() { Key.removeListener(keyListener); setinterval(keyListener, 5000); gotoAndPlay ("default", 1); }; Key.addListener(keyListener); Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Dezembro 1, 2009 Assim seria o correto: var keyListener:Object = new Object(); keyListener.onKeyDown = function() { Key.removeListener(keyListener); setInterval(interval, 5000); gotoAndPlay ("default", 1); }; Key.addListener(keyListener); function interval(){ Key.addListener(keyListener); } Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Grubert 0 Denunciar post Postado Dezembro 1, 2009 Assim seria o correto: var keyListener:Object = new Object(); keyListener.onKeyDown = function() { Key.removeListener(keyListener); setInterval(interval, 5000); gotoAndPlay ("default", 1); }; Key.addListener(keyListener); function interval(){ Key.addListener(keyListener); } Abraços Cara. Impossivel, está certinho, do jeito que eu preciso, mas não sei o que estou colocando errado que essa parada não funciona. http://forum.imasters.com.br/public/style_emoticons/default/no.gif Já vi que seu Messenger não é Help-Desk, mas será que poderia me ajudar? Acho que só vendo o meu .fla tudo facilitaria. Isto é, se estiver com um tempinho não é. http://forum.imasters.com.br/public/style_emoticons/default/cry.gif Tentei o seu código. Este aqui: var keyListener:Object = new Object(); setinterval (restart, 5000); function restart() { keyListener.onKeyDown = function() { gotoAndPlay ("default", 1); clearInterval(1); }} E muitos outros, mas não tem jeito! Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Dezembro 2, 2009 Mas afinal o que você quer fazer???? Que até agora eu não entendi? Pois pelo que entendi você queria travar por 5 segundos e isso meu código já faz... ele simplesmente ignora o teclado por 5 segundos... depois libera o teclado novamente. O problema provavelmente é que está em cenas diferentes Então para você controlar isso você deveria usar uma classe ou funções globais que sirvam para todas as cenas... assim resolveria seu problema. abraços Compartilhar este post Link para o post Compartilhar em outros sites