ボタンをクリックした時に、キャラ画像と音声が同時にランダムで表示されるサイトを作りたいのですが、Javascriptだけで作れますか?
MySQLなどを使わなければサイトが作れないなら、DBとか用に、PHPを使っておいた方が良いのでしょうか?
PHPを基本として、ボタン押した時の、キャラの画像に対応したボイスデータをランダムで表示+再生する部分のみ
Javascriptを使う(PHPを使ったサイト内で呼び出す)事は可能なんでしょうか?
No.4
- 回答日時:
Web アプリケーションの形態はいろいろあります。
形態1) HTML や画像ファイルを静的に配置したのみの Web サーバー
形態2) PHP 等で実装したサーバー側処理で HTML を生成
形態3) 1 に加え JavaScript で組んだブラウザ側処理で HTML を編集
形態4) ブラウザ側から非同期通信する API をサーバー側に PHP 等で実装
ご提示の要件の場合ですと、操作性の都合で再生処理は 形態3 が必須です。あとはキャラ情報の管理をどのように行うかの設計によりますが、思いつく限り案を出してみます。
案A) 手作業で管理 (形態3のみ)
画像や音声ファイルは 形態1 で配置
再生処理で使用するキャラ一覧情報を、手作業で修正し 形態1 で配置
案B) 手作業だがある程度は自動化して管理 (形態3+α)
画像や音声ファイルは 形態1 で配置
画像や音声ファイルの命名基準を整理し、一覧をバッチ生成可能にする
再生処理で使用するキャラ一覧情報を、バッチ生成し 形態1 で配置
案C) 一覧情報だけデータベース管理 (形態2と3)
画像や音声ファイルは 形態1 で配置
画像と音声ファイルの配置情報をデータベース管理する
キャラ一覧情報を、形態2 でデータベースから出力し HTML に混ぜ込む
案D) すべてをデータベース管理 (形態3と4)
画像と音声も BLOB 型としてデータベース管理する
キャラ一覧情報と画像と音声を 形態4 でデータベースから出力
キャラ一覧情報が3桁程度で収まるならサーバー側の処理が不要の 案B で十分ですが、4桁を超えるなら管理用 CMS の導入と一緒に 案D を検討してください。
丁寧に教えて頂き有難うございます!
形態1と、携帯3が良さそうです!
DBには、
○『ユーザー名』
○『ユーザーのパスワード、メールアドレス』
○『キャラの画像データ』
○『キャラの音声データ』
とかを登録しようかと思います!キャラのデータはDBに保存しないと、呼び出しは不可能なんでしょうか?
ヴィジュアルコードというものでは、ファイルに画像や音声データを入れれば再生出来たのですが、Webアプリはそういう感じにはいかないのでしょうか?
ご教示願いますm(__)m
No.3
- 回答日時:
No2です
>キャラクターは2人で、複数の喋るセリフ音源とリンクさせて、
>表情にあった音声をあらかじめ、まとめといて、~~
キャラクターが2人なら、画像を入れ替えするよりも、両方表示しておいて、メインでない方を暗くするなどの演出もありなのかなと感じました。
「表情に合わせた」とあるので、1枚/1キャラではなくって、1キャラでも複数の画像を切り替えるのかな?
まぁ、それでもキャラの表示位置は固定の方が、わかり易そうな気がしました。
また、音声ファイルがどのくらいの容量になるのかにもよりますが、分解して数が多くなるのなら、全部をまとめてしまって、再生時に部分を切り出して再生するような考え方もできそうに思います。
(パラパラアニメの画像を、大きな1枚の画像から切り出すような要領です。)
画像と違って時間をピッタリには測れないので、つなぎに若干の余裕が必要になるかも知れませんが。
※ 詳細がわからないので、「お礼」を見て、雰囲気としての勝手な感想でした。
No.2
- 回答日時:
こんにちは
内容の詳細が不明ですけれど、セットの数にもよるのではないのかな?
キャラの数が多くて、キャプションや付属属性(説明等)が各種あるようだとDB利用になるでしょうけれど、単純に、画像と音声ファイルだけで、数もさほどなければ、そのままでも管理は可能でしょう。
以下に、スクリプトで順に再生するごく簡単な例を。
(内容が不明なので、勝手に想定)
・数はさほどないものと仮定し、LIタグにあらかじめ画像と音声の組み合わせて入れておく方式です。
・完全なランダムではなく、表示中のものと違うものが次に選ばれるように制御しています。(ですので2組以上データがないと動作しません)
・音声再生終了後、interval 秒後に次のものに切り替わります。
・全体にSTARTで開始、STOPで停止です。
かなりテキトーなので、雰囲気のみの参考とでも思ってください。
(Chrome、fxで動作確認)
<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
<style>
ul.hoge {
position: relative;
list-style-type: none;
margin:0; padding:0;
}
.hoge li {
position: absolute;
top:0; width: 100%;
text-align: center;
opacity: 0;
transition: all 1.5s;
}
.hoge li.play {
opacity: 1;
z-index: 10;
}
.hoge img {
width:400px; height: 400px;
}
</style>
</head>
<body>
<p><button type="button">STRAT</button></p>
<ul class="hoge">
<li>
<img src="./img/photo01.jpg" alt="" />
<audio src="./sound/sound1.wav" preload></audio>
</li>
<li>
<img src="./img/photo02.jpg" alt="" />
<audio src="./sound/sound2.wav" preload></audio>
</li>
<li>
<img src="./img/photo03.jpg" alt="" />
<audio src="./sound/sound3.wav" preload></audio>
</li>
<li>
<img src="./img/photo04.jpg" alt="" />
</li>
</ul>
<script>
const Player = {
flag : false,
no : -1,
interval : 10,
elms : document.querySelectorAll('.hoge li'),
start : () => {
let p = Player, tmp = p.no, audio;
if(!p.flag) return;
while(tmp == p.no) tmp = Math.random() * p.elms.length | 0;
if(p.no > -1) p.elms[p.no].classList.remove('play');
p.elms[tmp].classList.add('play');
p.no = tmp;
audio = p.elms[tmp].querySelector('audio');
if(audio){
audio.currentTime = 0;
audio.play();
} else {
p.next();
}
},
stop : () => {
let audio = Player.elms[Player.no].querySelector('audio');
if(audio) audio.pause();
},
next : () => {
if(Player.flag) setTimeout( Player.start, Player.interval * 1000);
}
};
if(Player.elms.length > 1){
document.querySelectorAll('ul.hoge audio').forEach(elm => {
elm.addEventListener('ended', Player.next );
});
document.querySelector('button').addEventListener('click', e => {
Player.flag = !Player.flag;
e.target.textContent = Player.flag?'STOP':'START';
if(Player.flag) Player.start(); else Player.stop();
});
};
</script>
</body>
</html>
丁寧にソースコードまで有難うございます!キャラクターは2人で、複数の喋るセリフ音源とリンクさせて、表情にあった音声をあらかじめ、まとめといて、それをランダムに表示したかったんです!
やはり、Javascriptじゃないときびしいですよね?(*^-^*)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- Visual Basic(VBA) Edge操作のアプリが例外発生に 1 2023/03/12 21:22
- Chrome(クローム) Webサイトの表示崩れの原因と対策 1 2022/08/01 23:16
- Excel(エクセル) excelvbaでスライドショーを作りたい 2 2023/04/20 14:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プルダウンの位置がwin/macでず...
-
画像をドラッグ&ドロップで移...
-
textareaに画像を表示したい
-
javascriptで毎月替わる画像
-
画像ランダム表示、しかしダブ...
-
Javascriptでリンク画像を1時...
-
画像クリックで別の場所の画像...
-
HTMLで条件分岐はできますか?
-
画像のランダム表示、及び画像...
-
JavaScriptとチェックボックス...
-
WEBページ立ち上げ時に1回のみ...
-
Javascript で共通の処理をどこ...
-
innerHTMLで、表示すると、一部...
-
画像の重なりの順序を代える方...
-
透過pngの透明部分以外をクリッ...
-
マウスオーバーと背景画像の固定
-
クリッカブルマップの一部分だ...
-
画像削除機能を付けたい
-
1枚の画像をクリックして複数の...
-
複数の画像を先に読み込ませ表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
textareaに画像を表示したい
-
Javascriptで指定した日付と時...
-
javascriptで毎月替わる画像
-
画像をフォルダに入れれば表示...
-
画像の重なりの順序を代える方...
-
スワップイメージが上手く動作...
-
JavaScriptとチェックボックス...
-
透過pngの透明部分以外をクリッ...
-
Gifアニメ、最後のコマに行った...
-
bxsliderにて読み込み後に内容...
-
Javascript で共通の処理をどこ...
-
1枚の画像をクリックして複数の...
-
各フォルダから1枚ずつ画像をラ...
-
画像を切り替えランダム表示
-
画像削除機能を付けたい
-
マウス追従スクリプトについて
-
画像ランダム表示、しかしダブ...
-
<table>、もしくは<iframe>内で...
-
1枚の画像をクリックすると複数...
-
画像とテキストのセットをラン...
おすすめ情報