Ir para conteúdo

Arquivado

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

Márcio Incubus

Fazer uma roda giratória no Flash

Recommended Posts

Fala galera beleza?

 

Achei na internet uma imagem e tive uma ideia de fazer alguns projetos com ela. A imagem é uma roda como segue abaixo:

 

print.jpg

 

Eu gostaria de fazer ela animada, ou seja, que ela rode. Sei fazer isso em Movie Clip, mas quero saber qual é a programação que faço pra que esse objeto se inicie somente quando eu encostar o mouse? Ou seja, ela deve ficar parada de início.

 

Parece simples, mas como estou iniciando ainda não tenho conhecimento. Quem puder me ajudar, ficarei grato.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, eu ia criar um novo tópico mas fiquei com medo de considerarem como tópicos iguais, etc...enfim, vamos lá.

 

Eu criei uma roleta de exemplo baseada nessa sua imagem, e ai entra meu problema: Ela não gira continuamente. Para girar continuamente, tem que ficar passando o mouse pra ela girar.

 

Bom, primeiro eu separei o fundo da roleta em si no PS. Mas vamos considerar a imagem toda.

 

1. Importe a imagem pro palco, clique nela e aperte F8 para transformar em simbolo. Selecione MOVIE CLIP e Ok.

 

2. Selecione o Movie Clip criado, abra a barra de propriedades e em "instance name"(ou algo assim) coloque o nome "roleta".

 

3.Crie uma nova camada e faça um retângulo (já que estamos considerando toda a imagem) do tamanho da imagem.

 

4. Divida esse retângulo no meio e transforme cada metade em botão (F8 > botão).

 

5. Selecione a metade da esquerda, abra a barra de propriedades e em "instance name"(ou algo assim) coloque o nome "esquerda". Faça o mesmo com a metade da direita, mas dê o nome de "direita" P.S: TIRE A OPACIDADE! Vá na barra de propriedades e selecione a guia color > alfa e poe em 0.

 

6. Crie uma nova camada (a de ações) e coloque o código.

 

esquerda.addEventListener(MouseEvent.MOUSE_OVER, rolaEsquerda);

function rolaEsquerda(event:MouseEvent):void
{
roleta.rotation -=20;
}

direita.addEventListener(MouseEvent.MOUSE_OVER, rolaDireita);

function rolaDireita(event:MouseEvent):void
{
roleta.rotation +=20;
}

 

 

 

Explicando: Na linha 4, onde está "-=20", significa que vai rodar em sentido anti-horário. Na linha 10, onde está "+=20", significa que está girando em sentido horário. O número 20, é a quantidade de graus no giro. Quanto mais graus, mais rápido.

 

Segue o arquivo AQUI

 

O problema é que esse código só faz com que a roleta só gire uma vez, e não continuamente. Se alguém descobrir como faz pra girar continuamente, manda ai pra mim! :grin:/>/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para girar continuamente você precisa registrar um evento enterframe quando você posicionar o mouse sobre o botão e na função relacionada ao enterframe incrementar ou decrementar o ângulo.

 

Márcio, essa lógica serve para você também. Ao invés de rotacionar somente quando o mouse se mover sobre a roda você pode registrar um enterframe quando o mouse encostar nela e fazer o incremento de rotação dentro dessa função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa Wendel e Marcos, muito obrigado pela ajuda de vocês! Wendel, você resolveu meu problema, pois eu não queria mesmo que ela girasse sem a ação do usuário, então eu só fiz uma pequena troca no código mesmo, trocando o evento MOUSE_OVER por MOUSE_MOVE conforme ele for mexendo o mouse ela vai girando, e aí isso ficou dentro do que eu imaginava. Eu imagino que você esteja querendo usar a roleta para algum jogo né? No caso eu estou usando mesmo para um site, então não preciso que ele gire continuadamente.

 

Agora sobre o seu problema eu até pesquisei sobre a dica que o Marcos nos deixou, mas tenho pouco conhecimento. Li mais sobre a função onEnterFrame que vai acionar o código de cara toda vez que for executado, mas não sei inserir isso no código para fazer dar certo. Como você manja mais, caso você queira algo sobre a sintaxe e a explicação do código, sugiro dar uma lida nesse link que explica melhor esse evento. Se conseguir avisa ae, vou continuar acompanhando o tópico até você resolver o seu problema.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcos, valeu pela dica! Vou fazer isso aqui e já já posto se deu certo.

 

Marcio, eu to querendo usar isso em um banner(slide no topo de site)e a roleta seria uma menu giratório pro usuário escolher a notícia que ele quer...fico feliz em ter ajudado :grin:/>

 

Ops, acho que deu ruim aqui rsrs...pode apagar a resposta a mais que tem ai :grin:/>

 

Bom, eu fiz esse código aqui e deu certo! Depois de ler muitas veses sua dica, consegui interpretá-la corretamente :D/>/>

 

//AGORA A FUNÇÃO QUE FAZ GIRAR NO SENTIDO ANTI-HORÁRIO

antiHorario.addEventListener(MouseEvent.MOUSE_OVER, passaMouse);

function passaMouse(event:MouseEvent):void
{
roleta.addEventListener(Event.ENTER_FRAME, girar);
function girar(event:Event)
{
roleta.rotation -= 2;
}

}

antiHorario.addEventListener(MouseEvent.MOUSE_OUT, tiraMouse);

function tiraMouse(event:MouseEvent):void
{
roleta.addEventListener(Event.ENTER_FRAME, girar);
function girar(event:Event)
{
roleta.rotation += 2;
}

}



//AGORA A FUNÇÃO QUE FAZ GIRAR NO SENTIDO HORÁRIO

horario.addEventListener(MouseEvent.MOUSE_OVER, passaMouseH);

function passaMouseH(event:MouseEvent):void
{
roleta.addEventListener(Event.ENTER_FRAME, girar);
function girar(event:Event)
{
roleta.rotation += 2;
}

}

horario.addEventListener(MouseEvent.MOUSE_OUT, tiraMouseH);

function tiraMouseH(event:MouseEvent):void
{
roleta.addEventListener(Event.ENTER_FRAME, girar);
function girar(event:Event)
{
roleta.rotation -= 2;
}

}

 

P.S: Eu adicionei dois botoes invisíveis para fazer a roda girar.

 

Bom, valeu pela ajuda!!

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.