複数の画像をスロットマシーンの用に横に回転させる


回転させるアルゴリズムがよくない。
あとで、なおそうっと!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>Images</title>

<style type="text/css">
  #waku0 { overflow:auto; width:600px; height:90px; border:1px red solid;}
  #waku0 img { border:0px none; width:120px; height:90px; }
</style>

<div id="waku0">
  <img src="./img/0.gif" alt="Image0">
  <img src="./img/1.gif" alt="Image1">
  <img src="./img/2.gif" alt="Image2">
  <img src="./img/3.gif" alt="Image3">
  <img src="./img/4.gif" alt="Image4">
  <img src="./img/5.gif" alt="Image5">
  <img src="./img/6.gif" alt="Image6">
  <img src="./img/7.gif" alt="Image7">
  <img src="./img/8.gif" alt="Image8">
  <img src="./img/9.gif" alt="Image9">
</div>
<script type="text/javascript">

var Math2 = new function ( ) {
  var sinTable = [ ];
  var cosTable = [ ];
  var i, t;

  for( i = 0; i < 720; i++ ) {
    t = i * Math.PI / 180;
    sinTable[ i ] = Math.sin( t );
    cosTable[ i ] = Math.cos( t );
  }

  this.sin = function ( deg ) {
    return sinTable[ (360 + deg % 360) |0 ];
  };
  
  this.cos = function ( deg ) {
    return cosTable[ (360 + deg % 360) |0 ];
  };
};


var RevolvingImage = (function ( sin, cos ) {
  return function ( pid, step, interval, face ) {

    var c, o;
    var k = [];
    var e = document.getElementById( pid );
    var l = e.getElementsByTagName( 'IMG' );
    var r = e.offsetWidth / 2;
    var n = face || l.length;
    var t = 360 / n;

    e.style.overflow = 'hidden';
    e.style.position = 'relative';

    for( c = 0; o = l[ c ]; c++) {
      k[c] = t * c;
      o.style.position = 'absolute';
      o.style.visibility = c < n ? 'visible': 'hidden';
    }
    (function ( ) {
      var c, x0, x1, s;
      for( c = 0; c < n; c++) {
        x0 = r * sin( k[c] ) ;
        x1 = r * sin( k[c] + t)+1;
        s = l[c].style;
        if( x0 < x1 ) {
          s.left   = (r + x0)|0 + 'px';
          s.width  = Math.abs((x1-x0)|0) + 'px';
          s.zIndex = 1 + '';
        } else {
          s.left   = (r + x1)|0 + 'px';
          s.width  = Math.abs((x0-x1)|0) + 'px';
          s.zIndex = 0 + '';
        }
        k[c] += step;
      }
      setTimeout( arguments.callee, interval );
    })();

  };
})( Math2.sin, Math2.cos );

RevolvingImage('waku0', -2, 50)

</script>