veterinário 0 Denunciar post Postado Fevereiro 16, 2009 Boa noite galera!!! Tenho um código assim........ on (press){ onEnterFrame=function(){ _root.rx_mc._x=_x+5; _root.rx_mc.roda_mc._rotation=_root.rx_mc.roda_mc._rotation+20; _root.rx_mc._rotation=+3; } } on (release){ _root.rx_mc._rotation=0; delete this.onEnterFrame } Como faço para trocar o on(press){ POR on(keyPress "<Left>"){ por exemplo, mas funcionar do mesmo jeito???? Tipo enquanto eu tiver pressinando ele tá fazendo e ao soltar ele pára!!! Valeu!!!!! Compartilhar este post Link para o post Compartilhar em outros sites
Public2004 79 Denunciar post Postado Fevereiro 17, 2009 Tire os códigos do objeto, instancie o mesmo como "myMc" e teste colocando o cód. abaixo no frame da timeline: myMc.onEnterFrame = function(){ if (Key.isDown(Key.LEFT)){ // Coloque aqui a ação quado pressionada a tecla "Left" }else{ // Coloque aqui ação quando soltar a tecla "Left" } }; Abs. Compartilhar este post Link para o post Compartilhar em outros sites
veterinário 0 Denunciar post Postado Fevereiro 17, 2009 Tire os códigos do objeto, instancie o mesmo como "myMc" e teste colocando o cód. abaixo no frame da timeline: myMc.onEnterFrame = function(){ if (Key.isDown(Key.LEFT)){ // Coloque aqui a ação quado pressionada a tecla "Left" }else{ // Coloque aqui ação quando soltar a tecla "Left" } }; Abs. Cara mto obrigado, você tá ajudando mto mesmo, vou testar, valeu de novo. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
veterinário 0 Denunciar post Postado Fevereiro 18, 2009 Consegui colocar o código na animação mas estou tendo 2 problemas com ele....... Imagine que a animação seja como se fosse um carrinho de mão, uma carriola..... Com essa parte do código ele vai para frente e para trás e ao ir inclina um pouquinho, como se levantasse a traseira..... Só com uma tecla funcionando, a para direita, ele inclina e vai para frente. Quando coloco a próxima tecla, para esquerda, ele inclina e cancela a inclinação da tecla anterior. Por que????? _root.rx_mc.onEnterFrame=function(){ if(Key.isDown(Key.RIGHT)){ _root.rx_mc._x=_root.rx_mc._x+5; _root.rx_mc.roda_mc._rotation=_root.rx_mc.roda_mc._rotation+20; _root.rx_mc._rotation=+3; //NÃO EXECUTA } else{ _root.rx_mc._rotation=0; } if(Key.isDown(Key.LEFT)){ _root.rx_mc._x=_root.rx_mc._x-5; _root.rx_mc.roda_mc._rotation=_root.rx_mc.roda_mc._rotation-20; _root.rx_mc._rotation=+3; //EXECUTA NORMAL } else{ _root.rx_mc._rotation=0; } } Como se não bastasse tem outro problema.......Usando tbm as setas do teclado eu faço subir e descer uma peça adaptada nesse carinho. Eu queria que quando ela alcançasse uma determinada altura ela não passasse deste ponto tanto quando fosse para cima quando como fosse para baixo. Do jeito que estou colocando, o código cancela o onEnterFrame da tecla quando a peça alcança o limite superior ou inferior e aí não funciona mais. Como arrumar???? _root.rx_mc.ampola_mc.onEnterFrame=function(){ if(Key.isDown(Key.UP)){ _root.rx_mc.ampola_mc._y=_root.rx_mc.ampola_mc._y-3 } if(_root.rx_mc.ampola_mc._y<-175){ //LIMITE SUPERIOR delete this.onEnterFrame; } if(Key.isDown(Key.DOWN)){ _root.rx_mc.ampola_mc._y=_root.rx_mc.ampola_mc._y+3 } if(_root.rx_mc.ampola_mc._y>+10){ ///LIMITE INFERIOR delete this.onEnterFrame; } } Por favor, me avise onde devo corrigir e por que não estava dando certo Valeu de novo. Compartilhar este post Link para o post Compartilhar em outros sites
Public2004 79 Denunciar post Postado Fevereiro 18, 2009 Você pode juntar todo esse cód. Utilizar apenas um "onEnterFrame" e mudar a condição dos limites (sem usar o "delete"), veja como ficaria: _root.rx_mc.onEnterFrame=function() { if (Key.isDown(Key.RIGHT)) { _root.rx_mc._x = _root.rx_mc._x + 5; _root.rx_mc.roda_mc._rotation = _root.rx_mc.roda_mc._rotation + 20; _root.rx_mc._rotation =+ 3; } else if (Key.isDown(Key.LEFT)) { _root.rx_mc._x = _root.rx_mc._x - 5; _root.rx_mc.roda_mc._rotation = _root.rx_mc.roda_mc._rotation - 20; _root.rx_mc._rotation =+ 3; } else if (Key.isDown(Key.UP)) { _root.rx_mc.ampola_mc._y = Math.max(_root.rx_mc.ampola_mc._y - 3, -175); } else if(Key.isDown(Key.DOWN)) { _root.rx_mc.ampola_mc._y = Math.min(_root.rx_mc.ampola_mc._y + 3, 175); } else { _root.rx_mc._rotation = 0; } }; Obs: Nas ações das teclas "UP" e "DOWN" você define os valores limites (no ex: "-175" e "175") - Mas para o seu projeto tem que efetuar os cálculos, se é ref. ao limites do Stage ou MC pai, + tamanho do MC que vai se mover... e poderá também definir os limites na horizontal, basta seguir esta lógica. Testa ae. Abs. Compartilhar este post Link para o post Compartilhar em outros sites
veterinário 0 Denunciar post Postado Fevereiro 19, 2009 Puxa vida cara!!!!!!!!!!!!!! Já tá até chato eu te agradecer tanto mas mto obrigado de novo todas suas correções deram certo. Isso virou quase que um curso para mim, VALEU mto mesmo. Teria como me explicar certinho o que essas funções fazem??? Para que eu possa usar em outras situações. VALEU!!! 1 - sobre o else if (já ví que tem que terminar só com else o código) 2 - _root.rx_mc.ampola_mc._y = Math.max(_root.rx_mc.ampola_mc._y - 3, -175); (para que serve o Math.max e o valor final, no exemplo o -175, é sempre dos limites do movimento) Compartilhar este post Link para o post Compartilhar em outros sites
Public2004 79 Denunciar post Postado Fevereiro 19, 2009 Ok, acho que esses dois abaixo você já sabe como funciona: onEnterFrame Como já diz o nome, ao entrar no frame, fica repetindo a função. Você usa o "delete" quando alguma condição desejada for alcançada ou queira parar a função. Key.isDown Retorna "true" caso a tecla especificada seja pressionda e "false" caso contrário. Quanto ao "else", depende da situação, utilizamos apenas quando queremos outra condição, caso uma ou mais condições não satisfaçam. No seu exemplo, foi utilizado caso nenhuma das condições fossem atendidas. "Math.min" e "Math.max" = Compara o menor ou maior valor entre dois números, ex: var minNum:Number = Math.min(15, 22); // Compara o Menor valor trace("O menor valor é: "+minNum); // 15 var maxNum:Number = Math.max(15, 22); // Compara o Maior valor trace("O maior valor é: "+maxNum); // 22No seu exemplo a comparação (limite) é com a posição "_y" do MC "ampola_mc" em relação a posição "_y" (175) do Stage.E como você definiu a posição "_y" do seu MC igual a esta comparação, enquanto o MC não atingir o limite definido, o mesmo pode ser movimentado pela tecla definida na função "Key.isDown". Math.min(_root.rx_mc.ampola_mc._y - 3, 175); Espero que seja de fácil compreensão. Abs Compartilhar este post Link para o post Compartilhar em outros sites
veterinário 0 Denunciar post Postado Fevereiro 20, 2009 Muito bem explicado, valeu Acho que entendi sim e isso tbm pode se usado no caso de redimensionamento de algum objeto?? Aumentar ou diminuir até certo limite??? DÚVIDA DE OUTRO TÓPICO Em um outro tópico que perguntei sobre uma condição para rodar uma sequencia de fotos "ao contrário" quando chegasse no frame 1, lembra?? Até postei o arquivo, um de uma caixa de vermífugo. Como eu faço para que ao invés de dar um prev ou nextFrame via algun btn eu consiga clicar na tela ou na foto e arrastar o mouse para direita e esquerda e fazer a mesma coisa????? Como se realmente rodasse a caixa. Compartilhar este post Link para o post Compartilhar em outros sites
veterinário 0 Denunciar post Postado Fevereiro 25, 2009 Bom dia cara, beleza???? Época de feriadão e cheio de posts para responder é bem complicado né.......... Por um acaso deu tempo de você ver o que perguntei anteriormente???? Tem mais uns 2 tópicos que coloquei também e ainda ninguém respondeu.................SNIF.......SNIF.......SNIF........RSRSRSSRSRSSRSRSR To no aguardo......... Valeu.....!!!!!!!!! Compartilhar este post Link para o post Compartilhar em outros sites
Public2004 79 Denunciar post Postado Fevereiro 27, 2009 Tranquilo veterinário!! Acho que entendi sim e isso tbm pode se usado no caso de redimensionamento de algum objeto?? Aumentar ou diminuir até certo limite???Depende da situação, mas pode ser utilizado sim. Como eu faço para que ao invés de dar um prev ou nextFrame via algun btn eu consiga clicar na tela ou na foto e arrastar o mouse para direita e esquerda e fazer a mesma coisa????? Como se realmente rodasse a caixa.Acho que não existe uma forma única de se fazer isso, um pouquinho de criatividade e algum conhecimento de AS. Por ex:Delimitar as áreas para quando posicionar o mouse, efetuar as ações (nextFrame ou prevFrame). Para isso primeiro defina as áreas e depois verifique a posição do cursor através das coordenadas "_xmouse" e "_ymouse" e para executar as ações, utilize "onMouseDown". Ou criar dois botões invisíveis, posicioná-los corretamente na área que deseja o clique, e colocar as ações normalmente nos eventos "onPress". Quanto aos outros tópicos que não foram respondidos, aguarde, pois talvez quem os visitou não tinham as respostas. Abs. Compartilhar este post Link para o post Compartilhar em outros sites
veterinário 0 Denunciar post Postado Fevereiro 27, 2009 Cara valeu de novo, muito bem explicado como sempre mas realmente acho que preciso de um curso mais avançado............tem umas coisas que não dou conta de fazer mesmo..........se não fosse vcs............viiiiiiiiiiiixi.........tava f...... O Complicado é a falta de tempo né, tô no quarto ano de med vet em Botucatu e tem um pessoal querendo umas animações de cunho didático sabe, para melhorar as aulas ou apresentar em monografias, congressos etc...........virou um hobby fazer essas coisas. No começo eram bem simples, de grátis, só pros chegados, mas agora tem um pessoal querendo e queria aumentar a renda familiar com isso né.....srsrsrsrrrs.............leitinho das crianças.........rsrrsrrr.......... Meu e-mail é legattivet@yahoo.com.br, gostaria de conversar com você sobre como vcs cobras esses serviços.........não queria abusar mas também não fazer de grátis claro. Se puder me mandar um e-mail sobre isso, valeu. Compartilhar este post Link para o post Compartilhar em outros sites
edinho420 0 Denunciar post Postado Outubro 8, 2010 Retomando o tópico.... No keyDown ele fica executando a ação até soltar o botão, eu quero q ele execute apenas 1x enquanto o botão estiver pressionado. Tem como ? MEU CÓDIGO: direita.onEnterFrame=function() { if (Key.isDown(Key.RIGHT)) { dir.start(); vis.start(); alvo.nextFrame(); } } Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Outubro 8, 2010 Você deveria ter criado um novo tópico para isso... Mas basta colocar depois do alvo.nextFrame() delete onEnterFrame; Abraços Compartilhar este post Link para o post Compartilhar em outros sites
edinho420 0 Denunciar post Postado Outubro 8, 2010 Valeu pela ajuda! Eu achei outra solução (bem mais complexa) que tb funcionou. Segue o código: var keyListener:Object = new Object(); keyListener.onkeyup = function() { switch (Key.getCode()) { case Key.LEFT : esq.start(); vis.start(); alvo.prevFrame(); break; case Key.RIGHT : dir.start(); vis.start(); alvo.nextFrame(); break; } }; Key.addListener(keyListener); Compartilhar este post Link para o post Compartilhar em outros sites