Executar determinada função num intervalo de tempo variável
3 participantes
Fórum dos Fóruns :: Ajuda e atendimento ao utilizador :: Questões sobre códigos :: Questões resolvidas sobre códigos Javascript e jQuery
Página 1 de 1
Executar determinada função num intervalo de tempo variável
Detalhes da questão
Endereço do fórum: https://somosmugiwara.forumeiros.com/
Versão do fórum: ModernBB
Descrição
Possuo o código abaixo, este que realiza um sorteio trocando as imagens até parar o sorteio. O código já funciona normalmente, mas estou tentando deixar a troca das imagens menos linear. Explico melhor, ao clicar no sorteio a troca das imagens dura 12 segundos com uma velocidade, windowsetInterval, de 100. Gostaria de deixar esta velocidade menos linear, com uma variância maior. Seria algo assim, começa em 100 e decai 10 a cada segundo, deixando um efeito de parada mais nítido. Pois do jeito que está a parada é súbita. Gostaria deste efeito de lentidão. Ando estudando o windowsetInterval e pensei no seguinte, criar uma nova variável, sendo esta array com todos os valores e simplesmente aplicar no windowsetInterval, mas não sei se funcionaria desta maneira. Espero dicas.
https://jsfiddle.net/Kadanda/f7cqdkn8/
Re: Executar determinada função num intervalo de tempo variável
Você pode utilizar um código como este:
Supondo que você invoque createInterval assim:
Executará o callback 5 vezes, com um intervalo inicial de 2000 milissegundos. A cada intervalo, incrementa-se o temporizador em 500 milissegundos. Se você quiser decrementar o intervalo, ao invés de 500, por exemplo, passe -500 (um número com sinal negativo).
Não vou montar o código todo para você, mas talvez isso ajude.
- Código:
function createInterval(rounds, intervalMs, incrementMs, callback, endCallback) {
createTimeout(0);
function createTimeout(elapsed) {
const interval = intervalMs + incrementMs * elapsed;
setTimeout(() => {
if (elapsed < rounds) {
if (typeof callback === 'function') {
callback();
}
createTimeout(elapsed + 1);
} else {
if (typeof endCallback === 'function') {
endCallback();
}
}
}, interval);
}
}
Supondo que você invoque createInterval assim:
- Código:
createInterval(5, 2000, 500, () => {
console.log('Woop!');
});
Executará o callback 5 vezes, com um intervalo inicial de 2000 milissegundos. A cada intervalo, incrementa-se o temporizador em 500 milissegundos. Se você quiser decrementar o intervalo, ao invés de 500, por exemplo, passe -500 (um número com sinal negativo).
Não vou montar o código todo para você, mas talvez isso ajude.
Re: Executar determinada função num intervalo de tempo variável
@Luiz Obrigado meu chapa, creio que entendi.
Re: Executar determinada função num intervalo de tempo variável
Tópico resolvidoMovido para "Questões resolvidas". |
Tópicos semelhantes
» Tempo de intervalo entre mensagens
» Gerir função de limite de tempo no Chatbox
» Executar sequência de áudio com Javascript
» Modificar determinada cor de fundo
» Imagem em determinada área
» Gerir função de limite de tempo no Chatbox
» Executar sequência de áudio com Javascript
» Modificar determinada cor de fundo
» Imagem em determinada área
Fórum dos Fóruns :: Ajuda e atendimento ao utilizador :: Questões sobre códigos :: Questões resolvidas sobre códigos Javascript e jQuery
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos