
JavaScriptでの画像切り替えをためしてみたくて、スライドショーを作ってみました。
元ネタは先日Excelで動かしたロックマンですw
前半はスライドショーという名のアニメーションのお披露目。
後半ははてなブログへの埋め込み方を紹介します。
JavaScriptで作ったスライドショー

- 繰り返し
- 無限(停止するまで)
- ページ送り
- ゆっくり:0.5秒
- 普通:0.3秒
- 速ーい:0.1秒
一般ウケを狙って「スライドショー」という表現を使いましたが、要はパラパラ漫画です。
単純にコマ送りするだけのアニメーションではありますが、ExcelとちがってWebサイトからページ送りの速度を変えたりできるのはJavaScriptならではじゃないでしょうか。
→Excel版はコチラ。
はてなブログへの埋め込み方
さて、お披露目したかったのは以上です。
ここから先は
- Webでスライドショー(パラパラ漫画)ってどうやって作るの?
- JavaScriptで画像切り替えられるの?
- はてなブログでもできるの?
画像のアップロード
まず、スライドショーを作るためには画像のアップロードが欠かせません。
はてなブログユーザーなら「はてなフォトライフ」を使っちゃいましょう。

ドラッグ&ドロップで簡単にアップロードできます。
私の場合は、アニメーション用に12枚の画像をアップしました(Excelをjpg化する方法は後述)。
あとは、アップロードした画像を開き、右クリック→「画像URLをコピー」するだけ。
簡単でしょ?
下記JavaScriptの配列(ImgArray )に格納するために画像URLを使います。
はてな記法でJavaScriptを書く
はてなブログ(はてな記法)で埋め込んだのは、下記のコードです。
<img id="SlideImg" src="https://cdn-ak.f.st-hatena.com/images/fotolife/y/**********/20220208/20220208224628.jpg" width="540px" height="auto">
<form id="Form11" action="#">
速度 <label><input type="radio" name="tempo" value="0" checked>ゆっくり</label> <label><input type="radio" name="tempo" value="1" >普通</label> <label><input type="radio" name="tempo" value="2" >速ーい</label>
<br>
<input type="button" onclick="Play11()" value="START" id="btn_Play11"> <input type="button" onclick="Stop11()" value="STOP" id="btn_Stop11">
</form>
<script>
// インターバル宣言
var Interval;
// 画像URL
let path = "https://cdn-ak.f.st-hatena.com/images/fotolife/y/you_key69/";
// 配列に追加
const ImgArray = [
path + "20220208/20220208224639.jpg"
,path + "20220208/20220208224653.jpg"
,path + "20220208/20220208224813.jpg"
,path + "20220208/20220208224824.jpg"
,path + "20220208/20220208224848.jpg"
,path + "20220208/20220208224857.jpg"
,path + "20220208/20220208224915.jpg"
,path + "20220208/20220208224949.jpg"
,path + "20220208/20220208231425.jpg"
,path + "20220208/20220208231416.jpg"
,path + "20220208/20220208231410.jpg"
,path + "20220208/20220208231359.jpg"
];
function Play11(){
// 再生ボタン無効化
btn_Play11.disabled = true;
https://cdn-ak.f.st-hatena.com/images/fotolife/y/**********/20220208/20220208231425.jpg
// ラジオボタンの値を取得
var element = document.getElementById('Form11'); //form要素を取得
var radioNodeList = element.tempo; // ラジオボタングループ(name="tempo")の値を取得
var TempoType = radioNodeList.value; // 選択状態の値(value)を取得
// ラジオボタンの選択結果によってテンポ(ミリ秒)を変更
var MilSec = 0;
if (TempoType == "0") {
MilSec = 500;
}
else if (TempoType == "1") {
MilSec = 300;
}
else {
MilSec = 100;
}
// スライドショー開始
var j = 0;
Interval = setInterval(function(){ // 指定テンポで繰り返す
SlideImg.src = ImgArray[j];
j = j + 1;
if (j == 12){j = 0;} // 12枚目終了後に1枚目に戻る
}, MilSec);
//}, 60 / bpm * 1000);
}
function Stop11(){
// インターバルを停止
clearInterval(Interval);
// 再生ボタン有効化
btn_Play11.disabled = false;
// 画像リセット
SlideImg.src = "https://cdn-ak.f.st-hatena.com/images/fotolife/y/you_key69/20220208/20220208224628.jpg";
}
</script>ポイントは下記。
- 画像コントロール.src = 画像URL で動的に画像セット
- 複数画像はURLを配列(Array)に格納して、ループ処理で切り替える
- setIntervalでループ速度を設定し、ボタンで再生/停止ができるようにする
スライドショーについては「setTimeout」を使われているサイトが多かったけど、私はメトロノームの開発で習得した「setInterval」を応用しました。
今後、画像と音声と共演させる構想もあるので、テンポを変えたり、再生・停止するには「setInterval」のほうが都合がいいのです。
参考Web
JavaScriptを書くにあたって…というより本記事を書くにあたって参考にさせていただいたWebページ集です。
Excelのドット絵を画像化したり、動かしたスライドショーを動画化する方法など。
JavaScriptスライドショー
ほぼ骨子はこれでイケる。
配列についても学べる。
ただし、「setTimeout」は使いませんでした。
Excelの表を画像化
Excelのセルにドットを打っちゃったもんだから、画像化するのめんどくさいなーと思ってたら、ベンリな方法がありました。
- 形式を選択して貼り付け(emf→jpeg)
- Excelファイルの拡張子をzipに変更
- 解凍 > xl > media配下のjpgを採取
もともとは表やグラフを画像化するオプションだと思いますが、転用することでドット絵の画像化もできます。
これは朗報。
PC画面を録画
Excel版の記事で使ったYouTube動画の撮影に使いました。
画面の録画をWindows標準機能「Win+G」でできることに驚き。
これはきっとゲーム配信用の機能ですよね。
昔は専用アプリをわざわざ入れてたもんなァ。
便利になったもんです(しみじみ)。
まとめ
ちょっと難航するかなと思われたJavaScriptでの画像操作も、意外とちゃんとできました。
次はいよいよ画像と音声のコラボ実現をめざします。
今度こそガチで難しそうだけど、ワクワクすっぞ。