Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: progress bar - how do?

  1. #1

    progress bar - how do?

    Salve a tutti gente

    ho un problema esistenziale....
    sono un niubbio di js (e questo è già un problema)

    sto cercando di mettere insieme una progress bar per un gioco, ne ho trovater parecchie, ma che funzionano solo una alla volta, a me serve una configurazione fatta in modo da poterne usare piu di una alla volta

    ho trovato questa su un sito


    // xp_progressbar
    // Copyright 2004 Brian Gosselin of ScriptAsylum.com
    //
    // v1.0 - Initial release
    // v1.1 - Added ability to pause the scrolling action (requires you to assign
    // the bar to a unique arbitrary variable).
    // - Added ability to specify an action to perform after a x amount of
    // - bar scrolls. This requires two added arguments.
    // v1.2 - Added ability to hide/show each bar (requires you to assign the bar
    // to a unique arbitrary variable).

    // var xyz = createBar(
    // total_width,
    // total_height,
    // background_color,
    // border_width,
    // border_color,
    // block_color,
    // scroll_speed,
    // block_count,
    // scroll_count,
    // action_to_perform_after_scrolled_n_times
    // )

    var w3c=(document.getElementById)?true:false;
    var ie=(document.all)?true:false;
    var N=-1;

    function createBar(w,h,bgc,brdW,brdC,blkC,speed,blocks,coun t,action){
    if(ie||w3c){
    var t='<div id="_xpbar'+(++N)+'" style="visibility:visible; position:relative; overflow:hidden; width:'+w+'px; height:'+h+'px; background-color:'+bgc+'; border-color:'+brdC+'; border-width:'+brdW+'px; border-style:solid; font-size:1px;">';
    t+='<span id="blocks'+N+'" style="left:-'+(h*2+1)+'px; position:absolute; font-size:1px">';
    for(i=0;i<blocks;i++){
    t+='<span style="background-color:'+blkC+'; left:-'+((h*i)+i)+'px; font-size:1px; position:absolute; width:'+h+'px; height:'+h+'px; '
    t+=(ie)?'filter:alpha(opacity='+(100-i*(100/blocks))+')':'-Moz-opacity:'+((100-i*(100/blocks))/100);
    t+='"></span>';
    }
    t+='</span></div>';
    document.write(t);
    var bA=(ie)?document.all['blocks'+N]:document.getElementById('blocks'+N);
    bA.bar=(ie)?document.all['_xpbar'+N]:document.getElementById('_xpbar'+N);
    bA.blocks=blocks;
    bA.N=N;
    bA.w=w;
    bA.h=h;
    bA.speed=speed;
    bA.ctr=0;
    bA.count=count;
    bA.action=action;
    bA.togglePause=togglePause;
    bA.showBar=function(){this.bar.style.visibility="v isible";}
    bA.hideBar=function(){this.bar.style.visibility="h idden";}
    bA.tid=setInterval('startBar('+N+')',speed);
    return bA;
    }}

    function startBar(bn){
    var t=(ie)?document.all['blocks'+bn]:document.getElementById('blocks'+bn);
    if(parseInt(t.style.left)+t.h+1-(t.blocks*t.h+t.blocks)>t.w){
    t.style.left=-(t.h*2+1)+'px';
    t.ctr++;
    if(t.ctr>=t.count){
    eval(t.action);
    t.ctr=0;
    }}else t.style.left=(parseInt(t.style.left)+t.h+1)+'px';
    }

    function togglePause(){
    if(this.tid==0){
    this.tid=setInterval('startBar('+this.N+')',this.s peed);
    }else{
    clearInterval(this.tid);
    this.tid=0;
    }}



    e nella pagina index questo


    <script language="javascript" src="progress.js"></script>



    <p align="left">Demo:</p>
    <p align="left"><script type="text/javascript">var bar1= createBar(1000,5,'white',1,'black','blue',85,7,3," ");</script>
    <p align="left">Demo:</p>
    <p align="left"><script type="text/javascript">var bar2= createBar(1000,5,'white',1,'black','blue',1000,85, 1,"");</script>


    bellissima niente da dire, e funziona in modo da averne piu di una alla volta...

    il problema con questa progress bar è che funziona esattamente ucome una barra di winzoz, cioè a blocchi

    mi serve modificarla in modo da averne una che abbia un blocco solo (un div che si estende per intenderci).

    sto cercando di mofdificarla in tal senso, ma non penso di riuscire a fare una cosa degna

    qualcuno riesce a darmi una mano?

    p.s. non riesco a capire perchè se tolgo la span prima della barra mi da errore :S

    GRazie a todos


    Mauro

  2. #2
    ho visto anche questo esempio che è su html.it che è perfetto, l'unica cosa è che se lo modifico per renderlo multi progress mi da errore




    <title>Progress</title>

    <style type="text/css">
    body{background:#FFF}
    div.progress{width: 100px !important; width /**/: 104px;
    margin: 0.5em 0;border: 1px solid #CCC;padding: 1px;
    font: 12px/16px Arial,sans-serif;text-align: center}

    div.progress span{display:block;width:100px;
    background:#ECECEC url(progressBk.png) no-repeat 0 0;
    color:#002F7E}
    </style>


    <script>
    // VARIABILI NECESSARIE
    var tot_secondi=10;

    function avvia(div){
    avanzamento=setInterval('avanza(div)',(tot_secondi *10));
    }

    a=1;

    function avanza(div){
    if(a<101){
    document.getElementById(div).innerHTML=a+"%";
    document.getElementById(div).style.backgroundPosit ion="-"+(100-a)+"px";
    ++a;
    }else{
    clearInterval(avanzamento);
    }

    }

    </script>




    </head>
    <body>



    <div align="center" style="background-color:white;padding:3px">


    <body onload="avvia('percentuale');">
    <div class="progress">
    <span id="percentuale" style="background-position:-100px 0">0%</span>
    </div>
    <div class="progress">
    <span id="percentuale2" style="background-position:-100px 0">0%</span>
    </div>
    </body>
    </html>

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2000
    Messaggi
    938
    Ciao,

    prova cosi


    <script>
    // VARIABILI NECESSARIE
    var tot_secondi=10;
    function avvia(){
    avanzamento=setInterval('avanza()',(tot_secondi*10 ));
    }
    a=1;
    function avanza(){
    if(a < 101){
    document.getElementById("div").innerHTML=a+"%";
    document.getElementById("div").style.backgroundPos ition="-"+(100-a)+"px";
    document.getElementById("div1").innerHTML=a+"%";
    document.getElementById("div1").style.backgroundPo sition="-"+(100-a)+"px";
    ++a;
    }else{
    clearInterval(avanzamento);
    }
    }
    </script>

    </head>



    <div align="center" style="background-color:white;padding:3px">
    <body onload="avvia();">
    <div class="progress">
    <span id="div" style="background-position:-100px 0">0%</span>
    </div>
    <div class="progress">
    <span id="div1" style="background-position:-100px 0">0%</span>
    </div>


    Massimo

  4. #4
    grazie Massimo, ma questo va bene se ne devo fare 2, qquello che serve a me è farne una decina in base alle esigenze della pagina in cui le creo.

    la soluzione migliore è quella di passare come variabili tot_secondi e il contenitore tipo cosi, ma cosi mi da errore: variabile contenitore non definito...

    <script>
    // VARIABILI NECESSARIE

    function avvia(contenitore,tot_secondi){
    avanzamento=setInterval('avanza(contenitore)',(tot _secondi*10));
    }
    a=1;
    function avanza(contenitore){
    if(a < 101){
    document.getElementById(contenitore).innerHTML=a+" %";
    document.getElementById(contenitore).style.backgro undPosition="-"+(100-a)+"px";
    ++a;
    }else{
    clearInterval(avanzamento);
    }
    }
    </script>

    </head>



    <div align="center" style="background-color:white;padding:3px">
    <body>
    <div class="progress" onClick="avvia('div',10);">
    <span id="div" style="background-position:-100px 0">0%</span>
    </div>
    <div class="progress" onClick="avvia('div1',20);">
    <span id="div1" style="background-position:-100px 0">0%</span>
    </div>
    Scripter di BloodColony
    www.bloodcolony.net

  5. #5
    qualcuno sa aiutarmi?
    Scripter di BloodColony
    www.bloodcolony.net

  6. #6
    up

    qualcuno ha trovato soluzione?

    sto diventando scemo :S
    Scripter di BloodColony
    www.bloodcolony.net

  7. #7
    ho fatto progressi sulla barra, per chi servisse non riesco ancra a passare la variabile


    <script>
    // VARIABILI NECESSARIE

    function avvia(contenitore,tot_secondi){
    avanzamento=setInterval('avanza(\''+contenitore+'\ ')',10);
    }
    a=1;
    function avanza(contenitore){
    if(a < 101){
    document.getElementById(contenitore).innerHTML=a+" %";
    document.getElementById(contenitore).style.backgro undPosition="-"+(100-a)+"px";
    ++a;
    }else{
    clearInterval(avanzamento);
    }
    }
    </script>

    </head>



    <div align="center" style="background-color:white;padding:3px">
    <body>
    <div class="progress" onClick="avvia('div',10);">
    <span id="div" style="background-position:-100px 0">0%</span>
    </div>
    <div class="progress" onClick="avvia('div1',20);">
    <span id="div1" style="background-position:-100px 0">0%</span>
    </div>
    Scripter di BloodColony
    www.bloodcolony.net

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    se intendi far passare la varibiale contenitore al setInterval, basta fare cosi:
    avanzamento=setInterval('avanza(" '+contenitore+'" )',10); cioè virgoletta" apice' nomevariabile 'apice "virgoletta ma secondo me cosi non risolvi (avevo fatto alcune prove che per manca di tempo non proseguito) se ho capito cosa vuoi fare.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    quella parte l'ho fatta e l'ho anche messa nell'ultimo esempio

    il problema è come mandare la variabile su cui viene calcolata la barra allo script in modo da passarla nello script stesso

    in uqesto esempio la variabile è a=1;
    Scripter di BloodColony
    www.bloodcolony.net

  10. #10
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    t'ho perso, quale variabile vuoi passare e perché? forse un esempio potrebbe agevolare?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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 © 2024 vBulletin Solutions, Inc. All rights reserved.