
私は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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
idを使わずにonclickで自身の要...
-
関数でy=g(x)のgとは何の略です...
-
クリックすると上に開くアコー...
-
要素名がスペースを含む場合のj...
-
jqueryの変数を関数の外に出す方法
-
ページ内に複数表がある場合のT...
-
jslintのエラーについて質問
-
functionから別のfunctionを実...
-
クロージャーの利点が理解できない
-
複数のxmlを同ページに読み込み...
-
無名関数を使うメリットは何で...
-
XMLHttpRequestオブジェクトが...
-
ActiveXobjectが作成できない
-
google apps scriptの終了のさせ方
-
Latexに関する質問です。
-
javascriptの基本的なことだと...
-
JavaScriptで簡単なクイズを作...
-
同じIDで定義した要素の配列を...
-
DOM要素を削除しても、イベント...
-
ボタンをクリックすると数が増...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
functionから別のfunctionを実...
-
idを使わずにonclickで自身の要...
-
関数でy=g(x)のgとは何の略です...
-
クリックすると上に開くアコー...
-
Matlabで自作関数をオーバーロード
-
XMLHttpRequestでキャッシュを...
-
javascriptのenchantの打ちミス
-
ASP 最終日の表示
-
javascriptのレキシカルスコー...
-
jQueryでのレスポンシブが綺麗...
-
jQueryを利用したアコーディオ...
-
イベントハンドラの関数の引数...
-
getElementByIdを使用したグロ...
-
関数名をテキストから読み込む...
-
delphi6を使っています。
-
JavaScript 宣言 について
-
Ajaxでデータベース(PostgreSQL)
-
functionはhtmlやjsに2度使えま...
-
Javascriptの丸括弧の意味
-
JavaScript/jQuery で元画像フ...
おすすめ情報