Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Come calcolare un percorso rettilineo

    Ciao a tutti,
    devo spostare un immagine sullo schermo da un punto ad un altro percorrendo una retta ad una certa velocità.
    Mi sapreste indicare per favore come posso calcolare tutti i punti che formano una retta sullo schermo (che non è esattamente un piano cartesiano) con steep=1 pixel che parte da:
    top:862, left:10 e arriva a top:0,bottom:screen.width?

    Grazie

  2. #2
    Ciao,
    per
    op:862, left:10 e arriva a top:0,bottom:screen.width
    intendevi
    op:862, left:10 e arriva a top:0,left:screen.width
    Se è si, la funzione dovrebbe essere:
    codice:
    function moveImage(img){
      var step=1;
      var sw = screen.width; //non sono sicuro che si recuperi così, controlla meglio.
      var top;
      var left = parseInt(substr(img.style.left, img.style.left.length-2)); //tolgo il 'px' dall'attributo left.
      left+= step;
      top = (left*(sw-862) -10*sw)/-10;
      img.style.left = left + 'px';
      img.style.top = top + 'px';
      return null;
    }
    l'ho buttata giù senza testarla, potrebbero esserci degli errori di sintassi.
    --
    Salvatore.

  3. #3

    l'ho buttata giù senza testarla, potrebbero esserci degli errori di sintassi.
    Grazie anch'io l'ho buttata giù davvero troppo velocemente e nella mia ci sono degli errori ma l'aula di informatica chiudeva......
    Il punto di partenza è:
    Top:0 e Bottom:0
    il punto di arrivo è:
    Top:862 e left:10
    Quindi l'animazione parte dall'angolo in alto a destra e arriva in basso a sinistra

  4. #4
    Con bottom indichi la distanza tra un punto e la parte inferiore dello schermo.
    Se l'immagine deve partire dall'angolo in alto a destra e arrivare in basso a sinistra le sue coordinate sono:
    da top:0 left:screen.width
    a top:screen.height left:0

    e la funzione diventerebbe:
    codice:
    function moveImage(img){
      var step=1;
      var sw = screen.width; 
      var sh = screen.height;
      var top;
      var left = parseInt(substr(img.style.left, img.style.left.length-2)); //tolgo il 'px' dall'attributo left.
      left+= step;
      top = (sh*(left-sw))/sw*-1;
      img.style.left = left + 'px';
      img.style.top = top + 'px';
      return null;
    }
    ti torna?
    --
    Salvatore.

  5. #5
    Con bottom indichi la distanza tra un punto e la parte inferiore dello schermo.
    Si scusa .
    L'immagine deve partire da Top:0 e Right:0
    Quindi appunto dall'angolo destro in alto
    e arrivare in basso a sinistra esattamente a:
    Top:862px e left:10px

    è importante il punto di arrivo in quanto si deve fermare esattamente sotto ad un altra immagine a 10 px da essa e finora dopo l'arrivo devo sempre fare degli accomodamenti

  6. #6
    codice:
    <script language='javascript' type='text/javascript'>
    var interval;
    var milliseconds = 500;
    
    function startMove(imgid){
      var img = document.getElementById(imgid);
      img.style.left="0px";
      img.style.top="0px";
      img.style.position="absolute";
      interval = window.setInterval(function(){ moveImage(img); }, milliseconds);
    }
    
    function moveImage(img){
      var step=1;
      var top;
      var left = parseInt(img.style.left.substr(0, img.style.left.length-2)); //tolgo il 'px' dall'attributo left.
      left+= step;
      top = Math.round(86.2*left);
      img.style.left = left + 'px';
      img.style.top = top + 'px';
      if (left==10)
         window.clearInterval(interval);
    
      return null;
    }
    </script>
    Questa è con le coordinate che mi hai dato.
    All'onload, o quando vuoi tu, chiami la startMove e gli passi l'id dell'immagine che vuoi animare.

    --
    Salvatore.

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.