![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
私はBouyomiLimeChat.jsのスクリプトを使用してチャット内のコメントを棒読みちゃんで読ましています。
やりたい事(例)
aさん:こんにちわ
効果音(ポロンっ)再生終わった後 (音声)aさん こんにちわ
↓こすると効果音はなりますが棒読みちゃんの音声と効果音が同時スタートなので重なちゃいます。どうにか効果音が再生終わった後に棒読みちゃん音声スタートにしたいのですが何方か伝授お願いします。
var bNick = false;
var bInOut = false;
var sRemoteTalkCmd = null;
var oShell;
var oWmi;
function play()
{
playSound('SendingSound.wav');
}
function addTalkTask(text) {
if(sRemoteTalkCmd == null) {
findRemoteTalk();
if(sRemoteTalkCmd == null) {
log("RemoteTalkが見つからないのでスキップ-" + text);
return;
}
}
oShell.Run(sRemoteTalkCmd + " \"" + text.replace("\"", " ") + "\"", 0, false);
}
function talkChat(prefix, text) {
if (bNick){
addTalkTask(prefix.nick + "。" + text);
play();
} else {
addTalkTask(text);
play();
}
}
function findRemoteTalk() {
var proc = oWmi.ExecQuery("Select * from Win32_Process Where Name like 'BouyomiChan.exe'");
var e = new Enumerator(proc);
for(; !e.atEnd(); e.moveNext()) {
var item = e.item();
var path = item.ExecutablePath.replace("\\BouyomiChan.exe", "");
sRemoteTalkCmd = "\"" + path + "\\RemoteTalk\\RemoteTalk.exe\" /T";
log("棒読みちゃん検出:" + path);
}
}
function event::onLoad() {
oShell = new ActiveXObject("Wscript.Shell");
oWmi = GetObject("winmgmts:\\\\.\\root\\cimv2");
//addTalkTask("ライムチャットとの連携を開始しました");
}
function event::onUnLoad() {
oShell = null;
oWmi = null;
//addTalkTask("ライムチャットとの連携を終了しました");
}
function event::onConnect(){
addTalkTask(name + "サーバに接続しました");
}
function event::onDisconnect(){
addTalkTask(name + "サーバから切断しました");
}
function event::onJoin(prefix, channel) {
if (bInOut) {
addTalkTask(prefix.nick + "さんが " + channel + " に入りました");
}
}
function event::onPart(prefix, channel, comment) {
if (bInOut) {
addTalkTask(prefix.nick + "さんが " + channel + " から出ました。");
}
}
function event::onQuit(prefix, comment) {
if (bInOut) {
addTalkTask(prefix.nick + "さんがサーバから切断しました。");
}
}
function event::onChannelText(prefix, channel, text) {
talkChat(prefix, text);
//log("CnannelText[" + channel + "]" + text);
}
function event::onChannelNotice(prefix, channel, text) {
talkChat(prefix, text);
//log("CnannelNotice[" + channel + "]" + text);
}
function event::onChannelAction(prefix, channel, text) {
talkChat(prefix, text);
//log("CnannelAction[" + channel + "]" + text);
}
function event::onTalkText(prefix, targetNick, text) {
talkChat(prefix, text);
//log("TalkText[" + prefix.nick + "]" + text);
}
function event::onTalkNotice(prefix, targetNick, text) {
talkChat(prefix, text);
//log("TalkNotice[" + prefix.nick + "]" + text);
}
function event::onTalkAction(prefix, targetNick, text) {
talkChat(prefix, text);
//log("TalkAction[" + prefix.nick + "]" + text);
}
No.3ベストアンサー
- 回答日時:
音声が再生されないのは関数のスコープの問題だと思います。
setTimeoutには、文字列ではなく関数を渡して下さい。
function talkChat(prefix, text) {
if (bNick) {
play();
setTimeout(function () {
addTalkTask(prefix.nick + "。" + text);
}, 2000);
} else {
play();
setTimeout(function () {
addTalkTask(text);
}, 2000);
}
}
ありがとうございます。
完璧に効果音終わってから音声が鳴ることできました。
ですが音声が鳴った事でわかった事(問題発生)もあります。
新しく質問したいと思います。
ありがとうでした。
No.2
- 回答日時:
すみません、変な書き方していました!
これで動かなかったら、もう本当にすみません。。。
function talkChat(prefix, text) {
if (bNick){
play();
setTimeout("addTalkTask('"+ prefix.nick + "。" + text +"')",2000);
} else {
play();
setTimeout("addTalkTask(text)",2000);
}
}
この回答への補足
何度もありがとうございます。
上記のように書きましたが(何度も見直してミスなし)
効果音は鳴るものの棒読みちゃん(音声)がまったくならなくなりました。
No.1
- 回答日時:
talkChatの部分を以下のようにしてはいかがでしょう。
動かなかったら申し訳ない。2000=2秒です。
function talkChat(prefix, text) {
if (bNick){
play();
setTimeout("addTalkTask(prefix.nick + "。" + text)",2000);
} else {
play();
setTimeout("addTalkTask(text)",2000);
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数でy=g(x)のgとは何の略です...
-
functionから別のfunctionを実...
-
jQuery タグで囲まれたテキスト...
-
HTML5でファイルドラッグ&ドロ...
-
jQueryの :not() .not() が有効...
-
複数の無名関数を合成したい
-
idを使わずにonclickで自身の要...
-
jQueryにて、.toggle()でアニメ...
-
thisとvar ?
-
関数の宣言文?
-
jQueryのドロップダウンメニュ...
-
要素名がスペースを含む場合のj...
-
再帰で関数を呼び出すとforルー...
-
ネットスケープやFireFoxでマウ...
-
基礎的な質問ですいません。jqu...
-
AJAX(?)TimeOutエラーが停止...
-
JavaScript 宣言 について
-
javascriptの質問です。関数内...
-
一つのアクションで関数を二つ...
-
jQuery 同じ処理を関数にまとめ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
functionから別のfunctionを実...
-
idを使わずにonclickで自身の要...
-
関数でy=g(x)のgとは何の略です...
-
phpでの文字の点滅表示
-
JAVAスクリプトで指定時間以降...
-
jslintのエラーについて質問
-
ページ内に複数表がある場合のT...
-
XMLHttpRequestでキャッシュを...
-
関数名をテキストから読み込む...
-
jQueryでzipを解凍読み込みする...
-
getElementByIdを使用したグロ...
-
jQuery 同じ処理を関数にまとめ...
-
クリックすると上に開くアコー...
-
小数点以下を5刻みで表示
-
Javascriptで引数の参照渡しか...
-
jQueryの"return false"の役割...
-
javascript(jQuery)でセル内...
-
jQueryの :not() .not() が有効...
-
jqueryの変数を関数の外に出す方法
-
jquery 複数のメソッド
おすすめ情報