Autor Zpráva
Alastor_Kopál
Profil *
<body onkeydown="prechod(event);">
<span id="textik" style="position: absolute; left: 0px; top: 500px;"><img src="logo.png"></span>
<script>

var stylTextu = document.getElementById("textik").style;
var poziceX = 0; 
var poziceY	= 500; 

function start(){
casovac = window.setInterval("krok(0,-5)", 50) 
}

function krok(stepX,stepY){

	poziceX += stepX;
	poziceY += stepY;
	
if(poziceY < 200){
clearTimeout(casovac)
}

	stylTextu.left = poziceX + "px";
	stylTextu.top = poziceY + "px";

}

function prechod(event)
{
  switch(event.keyCode) {
    case 37: start();
  }
}

</script>

Tenhle kód má dělat - při stisknutí tlačítka 37 (levé šipky) vysunout obrázek. Při dalším stisknutím tlačítka zase zasunout

chyby - když tlačítko zmáčknu vícekrát obr jede rychleji a také po zastavení h můžu posunout dalším stisknutím tlačítka vím v čem je chyba ale nevim co s ní
Molda
Profil
zkus to nejak takhle
<body onkeyup="prechod(event);">

   <script>
    var poziceX = 0; 
    var poziceY = 500; 
    var casovac = false;
    var jsme_v_cili = false;
    
    function start(){
      if (casovac) 
      {
        //casovani jiz bezi
      }
      else
      {
      //spustit casovani
      casovac = window.setInterval("krok(0,-5);", 50); 
      }
    }
    function krok(stepX,stepY){
     if(jsme_v_cili != true)
       {  
          stylTextu = document.getElementById("serial");
          poziceX += stepX;
          poziceY += stepY;
          stylTextu.style.left = poziceX + "px";
          stylTextu.style.top = poziceY + "px";
          document.getElementById('serial').innerHTML = poziceY+'serial';
         if(poziceY < 200){
         clearTimeout(casovac);
         jsme_v_cili = true;
       }
    }
    } 
    function prechod(event)
      {
        switch(event.keyCode) {
          case 37: start();
        }
      }
      </script>
Alastor_Kopál
Profil *
a teď chci aby se to vrátilo zpět v čem je chyba ? case ?

   <script>
    var poziceX = 0; 
    var poziceY = 500; 
    var casovac = false;
    var jsme_v_cili = false;
    
    function promena(){
if($space == 1){$space = 2;}
if($space == 2){$space = 1;}
else{$space = 1;}
}
    function start(){
      if (casovac) 
      {
        //casovani jiz bezi
      }
      else
      {
      //spustit casovani
if($space == 1){
      casovac = window.setInterval("krok(0,-5);", 50); }
else{
      casovac = window.setInterval("krok(0,5);", 50); }
      }
    }
    function krok(stepX,stepY){
     if(jsme_v_cili != true)
       {  
          stylTextu = document.getElementById("serial");
          poziceX += stepX;
          poziceY += stepY;
          stylTextu.style.left = poziceX + "px";
          stylTextu.style.top = poziceY + "px";
         if(poziceY < 200){
         clearTimeout(casovac);
         jsme_v_cili = true;
       }
    }
    } 
    function prechod(event)
      {
        switch(event.keyCode) {
          case 32: promena(); start();
        }
      }
      </script>
Alastor_Kopal
Profil
Javascript moc neumím - ale popral jsem se s tím :-)

přikládám funkční kód který po stisknutí mezerníku posune obrázek nahoru (a po druhé stiskutí zase dolu)

(toto vlákno je vyřešeno - kód jsem přiložil kdyby náhodou tento script někdo potřeboval)

<body onkeyup="prechod(event);">

   <script>
    var poziceX = 0; 
    var poziceY = 500; 
    var casovac = false;
    var jsme_v_cili = false;
    
    function start(){
if(jsme_v_cili){
      casovac_zpet = window.setInterval("krok_zpet(0,5);", 50);
}

else{
      if (casovac) 
      {
        //casovani jiz bezi
      }
      else
      {
      //spustit casovani
      casovac = window.setInterval("krok(0,-5);", 50);
      }}
    }
    function krok(stepX,stepY){
     if(jsme_v_cili != true)
       {  
          stylTextu = document.getElementById("serial");
          poziceX += stepX;
          poziceY += stepY;
          stylTextu.style.left = poziceX + "px";
          stylTextu.style.top = poziceY + "px";

         if(poziceY < 200){
         clearTimeout(casovac);
         jsme_v_cili = true;	
       }
    }
    } 


    function krok_zpet(stepX,stepY){
     if(jsme_v_cili == true)
       {  
          stylTextu = document.getElementById("serial");
          poziceX += stepX;
          poziceY += stepY;
          stylTextu.style.left = poziceX + "px";
          stylTextu.style.top = poziceY + "px";

         if(poziceY > 500){
         clearTimeout(casovac_zpet);
     poziceX = 0; 
     poziceY = 500; 
     casovac = false;
     jsme_v_cili = false;	
       }
    }
    }


    function prechod(event)
      {
        switch(event.keyCode) {
          case 32: start();
        }
      }
      </script>

<span id="serial" style="position: absolute; left: 0px; top: 500px;"><img src="nejakyobrazek.jpg"></span>
Chipsman
Profil *
A jak to udělám aby to jezdilo zleva doprava a uprostřed se to zastavilo?
peta
Profil
Chipsman:
na tuto animaci je tag Marquee, ale jestli chces nutne to cele resit pres js...
http://peter-mlich.wz.cz/web/js/prjpw/index.html#cas
2 Jednoduchá animace jako Marquee
Alastor_Kopal
Profil
Omlouvám se že tento topic ještě obnovuji - chci jen opravit ten poslední kód, který jsem tu dal. Měl chybu v tom, že při několika stisknutí naráz dělal věci které neměl dělat. Teď přikládám už totálně funkční kód

<body onkeyup="prechod(event);">

   <script>
    var poziceX = 0; 
    var poziceY = 500; 
    var casovac = false;
    var casovac_zpet = false;
    var jsme_v_cili = false;
    
    function start(){
if(jsme_v_cili){

if(casovac_zpet){}
else{      casovac_zpet = window.setInterval("krok_zpet(0,5);", 50);}
}

else{
      if (casovac) 
      {
        //casovani jiz bezi
      }
      else
      {
      //spustit casovani
      casovac = window.setInterval("krok(0,5);", 50);
      }}
    }
    function krok(stepX,stepY){
     if(jsme_v_cili != true)
       {  
          stylTextu = document.getElementById("serial");
          poziceX -= stepX;
          poziceY -= stepY;
          stylTextu.style.left = poziceX + "px";
          stylTextu.style.top = poziceY + "px";

         if(poziceY < 200){
         clearTimeout(casovac);
         jsme_v_cili = true;   
    casovac_zpet = false; 
       }
    }
    } 


    function krok_zpet(stepX,stepY){
     if(jsme_v_cili == true)
       {  
          stylTextu = document.getElementById("serial");
          poziceX += stepX;
          poziceY += stepY;
          stylTextu.style.left = poziceX + "px";
          stylTextu.style.top = poziceY + "px";

         if(poziceY > 500){
         clearTimeout(casovac_zpet);
     poziceX = 0; 
     poziceY = 500; 
     casovac = false;
     jsme_v_cili = false;    
       }
    }
    }


    function prechod(event)
      {
        switch(event.keyCode) {
          case 13: start();
        }
      }
      </script>

<span id="serial" style="position: absolute; left: 0px; top: 540px; width: 860px; height: 110px; border: 1px solid red; background: black; text-align: center; color: red;">Text který se pohybuje</span>
Alastor_Kopal
Profil
a co když chci ten objekt před vysunutím zakrýt ? (display:none;) nevim jak na to a moje pokusy neuspěly

    function krok(stepX,stepY){
     if(jsme_v_cili != true)
       {  
          stylTextu = document.getElementById("serial");
          poziceX -= stepX;
          poziceY -= stepY;
          stylTextu.style.left = poziceX + "px";
          stylTextu.style.top = poziceY + "px";

  if(poziceY != 540){stylTextu.style.display = "";}
  if(poziceY == 540){stylTextu.style.display = "none";}
  else{}

         if(poziceY < 200){
         clearTimeout(casovac);
         jsme_v_cili = true;   
    casovac_zpet = false; 
       }
    }
    } 
 //dole ten obekt
...ter; color: red; display: none;">Text který se pohybuje....   
    
Molda
Profil
aby byl vidět tak
stylTextu.style.display = "block";

a aby nebyl tak
stylTextu.style.display = "none";
Alastor_Kopal
Profil
Aha. Ale stejně potřebuji odhalit chybu v kódu, ať tam bylo block nebo nic - pořád se to nevysunuje
Molda
Profil
skuz změnit tu podmínku
if(poziceY != 540){stylTextu.style.display = "block";}

na "540px"
if(poziceY != "540px"){stylTextu.style.display = "block";}

a tu druhou taky na "540px"
Alastor_Kopal
Profil
Molda:
ano zkusil jsem to ale nejde to

když se podíváš do kódu tak poziceY je jenom číslo
          poziceY -= stepY;


a až při přiřazování hodnoty se tam přidává px
Molda
Profil
jo to sem přehlíd
tohle je funkční aspoň u mě :) ze začátku mě to nějak cukne to už si polaď
podívej se kam sem dal tohle stylTextu.style.display = "none"; a tohle stylTextu.style.display = "block";
   <script>
    var poziceX = 0; 
    var poziceY = 500; 
    var casovac = false;
    var casovac_zpet = false;
    var jsme_v_cili = false;
    function start(){
    stylTextu = document.getElementById("serial");
    if(jsme_v_cili){
    
    if(casovac_zpet){}
    else{      casovac_zpet = window.setInterval("krok_zpet(0,5);", 50);}
    }
    
    else{
      if (casovac) 
      {
        //casovani jiz bezi
      }
      else
      {
      //spustit casovani
      casovac = window.setInterval("krok(0,5);", 50); 
      stylTextu.style.display = "block";
      }}
    }
    function krok(stepX,stepY){
     if(jsme_v_cili != true)
       {  
          stylTextu = document.getElementById("serial");
          poziceX -= stepX;
          poziceY -= stepY;
          stylTextu.style.left = poziceX + "px";
          stylTextu.style.top = poziceY + "px";

         if(poziceY < 200){
         clearTimeout(casovac);
         jsme_v_cili = true;   
    casovac_zpet = false; 
       }
    }
    } 


    function krok_zpet(stepX,stepY){
     if(jsme_v_cili == true)
       {  
            stylTextu = document.getElementById("serial");
            poziceX += stepX;
            poziceY += stepY;
            stylTextu.style.left = poziceX + "px";
            stylTextu.style.top = poziceY + "px";
                   
            
           if(poziceY > 540){
           clearTimeout(casovac_zpet);  
           stylTextu.style.display = "none";
           poziceX = 0; 
           poziceY = 500; 
           casovac = false;
           jsme_v_cili = false;    
           }
      }
    }

    function prechod(event)
      {
        switch(event.keyCode) {
          case 13: start();
        }
      }
      </script>
      <span id="serial" style="position: absolute; left: 0px; top: 540px; width: 860px; height: 110px; border: 1px solid red; background: black; text-align: center; color: red; display: none;">Text který se pohybuje</span>

Alastor_Kopal
Profil
děkuji funguje

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: