Eu estava a tentar animar uma bola com um movimento suave quando me lembrei de usar a função sin para isso, mas o que estava a acontecer é que os valores se iam alterando com tempo, a bola ia subindo pouco a pouco, alguém sabe porque é que isso acontece? eu suponho que seja pelas casas decimais que se vão perdendo nas contas, fica aqui o código do que fiz e como tentei resolver o problema:
Nesta imagem podem ver o que tentei explicar, aí mostra a posição do mc em função do tempo:
PHP:
onClipEvent(load) {
var j:Number = 0;
var w:Number = 4;
var menor:Number = _y;//menor valor;
var menorTemp:Number;//variavel temporaria para o menor valor;
var maior:Number = _y;//maior valor;
var maiorTemp:Number;//variavel temporaria para o maior valor;
var difMenores:Number = 0;//variavel para a diferença entre os menores valores;
var difMaiores:Number = 0;//variavel para a diferença entre os maiores valores;
}
onClipEvent (enterFrame) {
_y +=Math.sin(j/3)*w;//função que define a animação, (j/3) aumenta o periodo e o *w aumenta a amplitude do movimento;
j+=0.5;
if(_y < menor){//este if vai verificar se a posição do mc é menor que a menor posição anteriormente atingida;
menorTemp = menor;
menor = _y;
if(menorTemp != menor){//este if verifica se o menor atingido da outra vez diferente do menor atingido agora;
difMenores = menorTemp - menor;
_y += difMenores;//soma a diferença dos menores para voltar +- à osição inicial;
}
}
if(_y < maior){//este if faz o mesmo que o de cima mas para a maior posição atingida;
maiorTemp = maior;
maior = _y;
if(maiorTemp != maior){
difMaiores = maiorTemp - maior;
_y += difMaiores;
}
}
}
Última edição: