dポイントプレゼントキャンペーン実施中!

私は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);
}

A 回答 (3件)

音声が再生されないのは関数のスコープの問題だと思います。


setTimeoutには、文字列ではなく関数を渡して下さい。


function talkChat(prefix, text) {
if (bNick) {
play();
setTimeout(function () {
addTalkTask(prefix.nick + "。" + text);
}, 2000);
} else {
play();
setTimeout(function () {
addTalkTask(text);
}, 2000);
}
}
    • good
    • 0
この回答へのお礼

ありがとうございます。

完璧に効果音終わってから音声が鳴ることできました。

ですが音声が鳴った事でわかった事(問題発生)もあります。

新しく質問したいと思います。

ありがとうでした。

お礼日時:2013/01/29 14:49

すみません、変な書き方していました!


これで動かなかったら、もう本当にすみません。。。

function talkChat(prefix, text) {
if (bNick){
play();
setTimeout("addTalkTask('"+ prefix.nick + "。" + text +"')",2000);
} else {
play();
setTimeout("addTalkTask(text)",2000);
}
}

この回答への補足

何度もありがとうございます。

上記のように書きましたが(何度も見直してミスなし)

効果音は鳴るものの棒読みちゃん(音声)がまったくならなくなりました。

補足日時:2013/01/28 23:56
    • good
    • 0

talkChatの部分を以下のようにしてはいかがでしょう。

動かなかったら申し訳ない。
2000=2秒です。


function talkChat(prefix, text) {
if (bNick){
play();
setTimeout("addTalkTask(prefix.nick + "。" + text)",2000);
} else {
play();
setTimeout("addTalkTask(text)",2000);
}
}

この回答への補足

ありがとうございます。

指摘いただいたと通りに書き換えたのですが。

音声(棒読みちゃん)効果音ともにならなくなりました。

補足日時:2013/01/28 23:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!