Ir para conteúdo

POWERED BY:

Arquivado

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

veterinário

Como troco on(press) por on(keyPress "<Left>"){

Recommended Posts

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

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

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

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

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

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

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); // 22
No 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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.