softklin Posted October 24, 2007 at 06:59 PM Report Share #142702 Posted October 24, 2007 at 06:59 PM Boas! Estou a criar umas páginas e achei engraçado colocar um efeito de neve a cair, mas sem grandes exageros, uma coisa discreta e sem imagens, e encontrei este código: /* Snow Fall 1 - no images - Java Script Visit http://rainbow.arch.scriptmania.com/scripts/ for this script and many more */ // Set the number of snowflakes (more than 30 - 40 not recommended) var snowmax=35 // Set the colors for the snow. Add as many colors as you like var snowcolor=new Array("#AAAACC","#DDDDFF","#CCCCDD","#F3F3F3","#F0FFFF") // Set the fonts, that create the snowflakes. Add as many fonts as you like var snowtype=new Array("Arial Black","Arial Narrow","Times","Comic Sans MS") // Set the letter that creates your snowflake (recommended: * ) var snowletter="*" // Set the speed of sinking (recommended values range from 0.3 to 2) var sinkspeed=0.6 // Set the maximum-size of your snowflakes var snowmaxsize=22 // Set the minimal-size of your snowflakes var snowminsize=8 // Set the snowing-zone // Set 1 for all-over-snowing, set 2 for left-side-snowing // Set 3 for center-snowing, set 4 for right-side-snowing var snowingzone=1 /* // * NO CONFIGURATION BELOW HERE * */ // Do not edit below this line var snow=new Array() var marginbottom var marginright var timer var i_snow=0 var x_mv=new Array(); var crds=new Array(); var lftrght=new Array(); var browserinfos=navigator.userAgent var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/) var ns6=document.getElementById&&!document.all var opera=browserinfos.match(/Opera/) var browserok=ie5||ns6||opera function randommaker(range) { rand=Math.floor(range*Math.random()) return rand } function initsnow() { if (ie5 || opera) { marginbottom = document.body.clientHeight marginright = document.body.clientWidth } else if (ns6) { marginbottom = window.innerHeight marginright = window.innerWidth } var snowsizerange=snowmaxsize-snowminsize for (i=0;i<=snowmax;i++) { crds[i] = 0; lftrght[i] = Math.random()*15; x_mv[i] = 0.03 + Math.random()/10; snow[i]=document.getElementById("s"+i) snow[i].style.fontFamily=snowtype[randommaker(snowtype.length)] snow[i].size=randommaker(snowsizerange)+snowminsize snow[i].style.fontSize=snow[i].size snow[i].style.color=snowcolor[randommaker(snowcolor.length)] snow[i].sink=sinkspeed*snow[i].size/5 if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)} if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)} if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4} if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2} snow[i].posy=randommaker(2*marginbottom-marginbottom-2*snow[i].size) snow[i].style.left=snow[i].posx snow[i].style.top=snow[i].posy } movesnow() } function movesnow() { for (i=0;i<=snowmax;i++) { crds[i] += x_mv[i]; snow[i].posy+=snow[i].sink snow[i].style.left=snow[i].posx+lftrght[i]*Math.sin(crds[i]); snow[i].style.top=snow[i].posy if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i])){ if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)} if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)} if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4} if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2} snow[i].posy=0 } } var timer=setTimeout("movesnow()",50) } for (i=0;i<=snowmax;i++) { document.write("<span id='s"+i+"' style='position:absolute;top:-"+snowmaxsize+"'>"+snowletter+"</span>") } Pronto, o codigo é longo, mas se chegaram até aqui, obrigado, porque o dilema vem agora 😛 Esta função inicia-se e... não para... a não ser claro, que o user desligue o JS.. Bem, o que pretendia, era que me ajudassem a criar uma pequena função que, a pedido, clicando num link ou botão, parasse este script. Eu pensei numa função que ocultasse os sucessivos spans que isto cria, mas será possivel eliminá-los, para assim poupar eventual memória? Obrigado desde já 😛 Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
LuRsT Posted October 24, 2007 at 10:52 PM Report Share #142756 Posted October 24, 2007 at 10:52 PM Acho que é simples criares um funcao com esse codigo e meteres no link <a href='#' onClick="funcaodasNeves()">Mete a neve pa!</a> BotNet: The Game Tudo Sobre Formigas Link to comment Share on other sites More sharing options...
TheDark Posted October 24, 2007 at 11:25 PM Report Share #142764 Posted October 24, 2007 at 11:25 PM Troca o var timer=setTimeout("movesnow()",50) da função movesnow por timer=setTimeout("movesnow()",50). Ou seja, tira o var; Cria uma função hidesnow que coloque a visibilidade dos objectos do array snow como hidden e pare o timer; Cria uma função showsnow que coloque a visibilidade dos objectos do array snow como visible e inicie o timer. Acho que não é preciso dizer, mas chama a função hidesnow quando quiseres pará-la e e showsnow quando quiseres continuá-la 😄 EDIT: Faltou-me a parte de eliminar os elementos. Embora eu ache que isso adiciona um overhead excessivo se quiseres reiniciar a neve, basta fazer um for para todos os elementos do array snow que faça delete a snow[i]. Desaparecido. Link to comment Share on other sites More sharing options...
softklin Posted October 25, 2007 at 02:49 PM Author Report Share #142822 Posted October 25, 2007 at 02:49 PM Boas! Obrigado pelas respostas. Não sabia da existência de uma função que parasse o timer, mas afinal sempre há 😄 Ora, para quem ficou com curiosidade ou tem um problema semelhante, aqui está o código: function stopSnow(){ //apaga a função de timeout em cima clearTimeout(timer); //esconde os flocos for(j=0; j<=snowmax;j++){ document.getElementById("s"+j).style.visibility="hidden"; } } E claro, obrigado pela vossa ajuda 😄 EDIT: já agora, as fontes 😄 http://www.w3schools.com/js/js_timing.asp Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now