0

設定された数の画像をループして、それぞれを順番に表示する方法はありますか (一度に 1 つずつ、新しい画像は前の画像と同じ場所に表示されます)。どうすればこれを達成できますか?

各画像をフェードインおよびフェードアウトするjQueryを使用して、この種の効果を作成することができました。追加のライブラリなしで、JavaScript でこれを行う方法はありますか?

4

1 に答える 1

0

このコードを使用して、あなたの言うことを実行します。

注: 最後の画像で停止します。

<script type="text/javascript">
// <!--
var imagePaths = ["images/slide1.jpg", "images/slide2.jpg", "images/slide3.jpg"];
var showCanvas = null;
var showCanvasCtx = null;
var img = document.createElement("img");
var currentImage = 0;
var revealTimer;
var timeoutVariable = 3000;

window.onload = function () {
  showCanvas = document.getElementById('SlideShowCanvas');
  showCanvasCtx = showCanvas.getContext('2d');
  img.setAttribute('width', '560');
  img.setAttribute('height', '343');
  switchImage();
  setInterval(switchImage, timeoutVariable);
}

function switchImage() {
// Loop once
if (currentImage >= imagePaths.length) {
  clearInterval(revealTimer);
  clearTimeout(timeoutVariable);
} else {
  img.setAttribute('src', imagePaths[currentImage++]);
  showCanvasCtx.globalAlpha = 0.1;
  revealTimer = setInterval(revealImage, 100);
}

function revealImage() {
  showCanvasCtx.save();
  showCanvasCtx.drawImage(img, 0, 0, 560, 343);
  showCanvasCtx.globalAlpha += 0.1;
  if (showCanvasCtx.globalAlpha > 1.0)
  clearInterval(revealTimer);
  showCanvasCtx.restore();
}
// -->
</script>

おっと

htmlを追加するのを忘れていました

<canvas id="SlideShowCanvas" style="width: 560px; height: 343px;" width="560px" height="343px">
  <div style="width: 560px; text-align: center; vertical-align: middle; height: 343px; border: 1px solid #C0C0C0;">
    <span style="width: 560px; height: 343px;">
      <br /><br />Your browser does not support<br />the html5 canvas object!<br /><br /><a href="http://www.microsoft.com/ie">Click Here To Download Microsoft's</a><br />Feature Rich Internet Explorer Web Browser<br />
    </span>
  </div>
</canvas>
于 2013-04-30T01:54:12.360 に答える