Ir para conteúdo

POWERED BY:

Arquivado

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

Sandler Riot

Movimentar itens com o mouse

Recommended Posts

Olá galera.

 

Imaginem a seguinte situação:

 

Vou ter vários icones na tela... Ao passar o mouse sobre estes icones quero que eles se movam... Ex:

 

Passo o mouse no sentido da esquerda pra direita...

 

Quando "bater" nos icones vai meio que afastando os icones, "esparramando".

 

Mais ou menos isso.

 

Alguém tem alguma ideia?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou ter vários icones na tela... Ao passar o mouse sobre estes icones quero que eles se movam... Ex:

 

Passo o mouse no sentido da esquerda pra direita...

 

Quando "bater" nos icones vai meio que afastando os icones, "esparramando".

 

Mais ou menos isso.

Bom, nunca tentei fazer nada do tipo, mas eu faria mais ou menos assim:

Distribuiria os Movie Clips dos ícones em um mesmo keyframe, e nesse keyframe colocaria um action

 

// Variáveis
var mX1; // Armazenará a posição X do mouse no quadro anterior.
var mY1; // Armazenará a posição Y do mouse no quadro anterior.
var mX2; // Armazenará a posição X do mouse no quadro atual.
var mY2; // Armazenará a posição Y do mouse no quadro atual.
var dist; // Armazenará a distância que o mouse percorreu entre um quadro e outro.

function onEnterFrame{ // Tudo o que estiver dentro do bloco
// será executado a cada quadro, ou seja,
// se, nas propriedades do seu filme, você
// selecionou 12 quadros por segundo (fps),
// esse action será executado 12 vezes por segundo.

...

}

Bom, eu não sou muito bom na linguagem ActionScript, mas peça ajuda do pessoal para aplicar a seguinte lógica (em AS2):

Nos "..." você tem que fazer as variáveis mX1 e mY1 receberem o valor de mX2 e mY2 respectivamente.

Então, mX2 e mY2 recebem as coordenadas atuais do mouse, deve ser alguma coisa como...

 

mX1 = mX2;
mY1 = xY2;
mX2 = mouse._x;
mY2 = mouse._y;

Não sei se o código está correto!

 

Mas continuando... depois disso, ainda dentro da function onEnterFrame, deve-se calcular a distância entre o ponto em que o mouse estava no quadro anterior e o ponto em que ele está agora. Faremos isso com base na fórmula:

dist = Math.swrt(Math.pow(mX1 - mX2, 2) + Math.pow(mY1 - mY2,2));

Não sei se o código está certo, também!

 

Agora... você poderia criar um MC de 1 x 1 pixels, dar um nome de instância para ele, supondo "SEGUE".

Esse "SEGUE" basicamente seguirá o mouse (você pode reduzir o alpha dele se não quiser que apareça) e, quando detectado que ele encostou em um dos MC's dos ícones, os ícones se mexem uma distância "dist", ou seja, eles se mexem o mesmo tanto que o mouse andou.

Seria mais ou menos assim:

 

SEGUE._x = Mouse._x;
SEGUE._y = Mouse._y;
// Os dois comandos acima farão o MC SEGUE efetivamente seguir o mouse
// A próxima linha provavelmente contém um erro:
if(hitTest("SEGUE", "Icone1")){
  Icone1._x += dist;
  Icone1._y += dist;
}
// CAAAASO por um milagre funcione, isso fará o primeiro ícone se deslocar quando for atingido pelo mouse

Tudo isso também dentro do function onEnterFrame().

Lembre de dar um nome de instância para os MCs dos ícones (no caso, eu dei o nome do primeiro de "Icone1").

Deve estar tudo errado, mas o que você deve aproveitar é a lógica, e não o código, pois de código mesmo eu não manjo muito.

Peço ajuda da comunidade para corrigir o meu código, pois agora quero ver o negócio funcionando!!!

Abração, espero ter ajudado mais do que atrapalhado!

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.