Visualizzazione dei risultati da 1 a 1 su 1
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    228

    Rallentare QUESTA animazione su canvas

    Ciao a tutti, ho un sito con un countdown, a cui ho applicato uno script per aggiungere fuochi d'artificio una volta arrivato a zero. Ho utilizzato un codice trovato in internet, che utilizza un canvas (che si sovrappone ad un div a mia scelta) per generare i fuochi.

    Il problema è che il mio div è relativamente piccolo mentre lo script è progettato per div più grandi, quindi diciamo che corre troppo... (div più piccolo=fuoco più veloce)

    Di javascript ne capisco abbastanza, ma questo codice mi è ostico... vorrei capire quali paramentri determinano la velocità, chi mi aiuta (non è poi così lungo)?

    codice:
    if(!Xteam)var Xteam={};Xteam.fireworkShow=function(a,c){
    function e(){
    a=j(a).eq(0);
    a.css("position")=="static"&&a.css("position","relative");
    h=j("<canvas></canvas>");
    if(!h[0].getContext)return false;
    h.attr({height:a.height(),width:a.width()}).css({position:"absolute",display:"block",top:0,left:0,zIndex:99999}).appendTo(a);
    n=Xteam.Canvas.scene(h[0]);
    l=setInterval(function(){Math.random()>0.75||Xteam.firework(n)},1.5*c);
    k=true}var d={},j=jQuery,l,n,h,k=false;
    c=c||900;
    e();
    d.remove=function(){if(k){
    clearInterval(l);
    n.destroy();
    n=null;
    h.remove();
    a=h=null}};
    return d};
    Xteam||(Xteam={});
    Xteam.firework=function(a){function c(){k=360*Math.random();
    f=Xteam.Color.hslToRgb([k,Math.random(),0.2+0.8*Math.random()]);
    i=(a.getCanvas().width-h*2)*Math.random()+h;
    m=(a.getCanvas().height/2-h)*Math.random()+h;
    o=a.getCanvas().height;
    a.register(j)}function e(){if(o>m){o-=10;
    l.fillStyle="rgb("+f[0]+","+f[1]+","+f[2]+")";
    l.beginPath();
    l.arc(Math.round(i),Math.round(o),2,0,2*Math.PI,true);
    l.fill()}else{a.remove(j);
    d()}}function d(){for(var p=40+Math.floor(50*Math.random());
    p--;
    ){var q=Xteam.Color.hslToRgb([k, Math.random(),0.2+0.8*Math.random()]);
    new n(a,q,i,m,10)}}var j={draw:e},l=a.getContext(),n=Xteam.FireworkParticle,h=70,k,i,m,o,f;
    c();
    return j};
    Xteam.FireworkParticle=function(a,c,e,d){this.scene=a;
    this.color=c;
    this.x=Math.round(e);
    this.y=Math.round(d);
    this.rotate=2*Math.PI*Math.random();
    this.opacity=500;
    this.f=0;
    this.max=50+10*Math.random();
    this.size=0;
    this.speed=4*Math.random();
    a.register(this)};
    Xteam.FireworkParticle.prototype={getStyle:function(){return"rgba("+this.color[0]+","+this.color[1]+","+this.color[2]+","+this.opacity/100+")"},draw:function(a,c){if(this.f<this.max){this.f++;
    this.size+=this.speed;
    this.speed*=0.95;
    if(this.f>0.8*this.max)this.opacity-=6;
    c.lineWidth=1;
    c.save();
    c.translate(this.x,this.y);
    c.rotate(this.rotate);
    c.strokeStyle=this.getStyle();
    c.beginPath();
    c.moveTo(Math.round(0.85*this.size),0);
    c.lineTo(Math.round(this.size),0);
    c.stroke();
    c.restore()}else this.scene.remove(this)}};
    Xteam||(Xteam={});
    if(!Xteam.Canvas)Xteam.Canvas={};
    Xteam.Canvas.scene=function(a){function c(f){i.push(f)}function e(){for(var f=m.length;
    f--;
    )i[m[f]]=null;
    m=[];
    for(f=i.length;
    f--;
    )i[f]||i.splice(m[f],1)}function d(f){for(var p=i.length;
    p--;
    )if(f===i[p]){m.push(p);
    break}}function j(){clearInterval(o)}function l(){return k}function n(){return a}var h={register:c,remove:d,getContext:l,getCanvas:n,destroy:j},k=a.getContext("2d"),i=[],m=[],o=setInterval(function(){k.clearRect(0,0,a.width,a.height);
    for(var f=i.length;
    f--;
    )typeof i[f].draw=="function"&& i[f].draw(h,k);
    e()},30);
    return h};
    Xteam||(Xteam={});
    if(!Xteam.Color)Xteam.Color={};
    Xteam.Color.hslToRgb=function(a){var c=a[0],e=a[1];
    a=a[2];
    if(e==0)r=g=b=a;
    e=a<0.5?a*(1+e):a+e-a*e;
    a=2*a-e;
    c/=360;
    var d=[];
    d[0]=c+1/3;
    d[1]=c;
    d[2]=c-1/3;
    for(c=3;
    c--;
    ){d[c]%=1;
    d[c]=d[c]<1/6?a+(e-a)*6*d[c]:d[c]<0.5?e:d[c]<2/3?a+(e-a)*6*(2/3-d[c]):a;
    d[c]*=255;
    d[c]=Math.floor(d[c]);
    if(d[c]<0)d[c]=0}return d};
    Xteam.Color.hslToRgb.test=function(){function a(e,d){for(var j=e.lenght;
    j--;
    )if(e[j]!==d[j])throw Error("Got "+e+", expected "+d);
    console.log("success")}var c=Xteam.Color.hslToRgb;
    a(c([0,1,1]),[1,0,0]);
    a(c([120,0.5,1]),[0.5,1,0.5]);
    a(c([240,1,0.5]),[0,0,0.5]);
    c([104.15549071384422,0.9040453462245244,0.2855993456480115])};
    Ultima modifica di SimoX90; 03-06-2014 a 13:41

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.