投稿
nobu divine-creator
今回の更新後、TALKの音声が「一画面に表示される最後の文のみ発音される」ようになってしまっているようですが、TALKを使用されている他の方々は、同じ症状になっておりませんか? これって、自分で修正する方法があるのでしょうか?(プログラム上のミスではないように思えるのですけど…。)
1そうだね
プレイ済み
返信[1]
親投稿
mkII時の仕様にもどったようですね。
0そうだね
プレイ済み
返信[2]
親投稿
TALKCHK()でTALK命令が実行中か判定できます。
0そうだね
プレイ済み
返信[3]
親投稿
nobu divine-creator
(?_?)?! Mk2の仕様に戻った?…とは、どういうことなのでしょうか?(複数のTALKを順番に読んでくれないのでしょうか?) TALKCHK()でチェックして、実行されていないと判定された場合には、どのような対処をしたら良いのでしょう?
0そうだね
プレイ済み
返信[4]
親投稿
前と今どちらが、3号の本仕様かは、わかりませんが、 1)1回目のTALK 2)TALKCHK()(待ち合わせ機能無し)でチェックしながら前のをTALK命令終わるまで待つ 3)2回目のTALK こんな感じでしょうか。
0そうだね
プレイ済み
返信[5]
親投稿
nobu divine-creator
TALKCHK()って、命令表の例文ですとRET=TALKCHK()というように、変数=の形で説明されていますが、この変数を使ってどのように入力すれば良いのでしょうか?
0そうだね
プレイ済み
返信[6]
親投稿
IFの条件で使えばいいと思います。 TALK命令は複数連続して記述しているのでしょうか。 それとも、ループの中で、一つのTALK命令の引数値を変えながら、処理するように記述しているのでしょうか。 それによって、対処が異なると思います。
0そうだね
プレイ済み
返信[7]
親投稿
nobu divine-creator
TALK "さいしょに~" PRINT "さいしょに~" TALK "つぎに~" PRINT "つぎに~" このような感じで、複数のTALKが並んでいる状態で、最後のTALKだけが読まれて、次へ進むというのが現状です…。 どうして「最後以外のTALK」が無視されてしまうのでしょうか?
0そうだね
プレイ済み
返信[8]
親投稿
遅くなって済みません。 間に、WAIT 120またはVSYNC 120といれるとわかりますが、無視されているのでは無く、実行してすぐに、別の命令がきたので、前の命令をやめて新しい命令を実行していると言うことだと思います。
1そうだね
プレイ済み
返信[9]
親投稿
前は待ち合わせるようになっていた(仕様か不具合かは不明です。)ので、問題が無かったと言うことです。 対処案としては、TALKの前に、ループ処理を使ってTALKCHK()==FALSEになるまで待ち合わせをする処理を追加すれば今までと同じ処理になります。具体的な書き方は、人によって好みが変わるかと思います。
1そうだね
プレイ済み
返信[10]
親投稿
nobu divine-creator
一番簡単な方法としては、WAITの数値を調整するというのもありますね♪(あまり良い方法とは言えませんけど…。)
0そうだね
プレイ済み
返信[11]
親投稿
可能ですが、表示する文字列が変わるとそれに合わせて変更する必要があるため、調整の手間が増えると思います。TALKが終わってから何秒待つとかだったら、あまり調整の必要性は少ないですよね。ただし、時間の方が優先で、TALKを打ち切りたい場合には有効だと思います。
1そうだね
プレイ済み
返信[12]
親投稿
前のTALKを使ったことがないので正確な動作はわからないのですが、 DEF WTALK S$ REPEAT:VSYNC:UNTIL !TALKCHK() TALK S$ END という命令を作って、TALKの代わりにWTALKを使えば同じような動作になるんですかね?
0そうだね
プレイ済み
返信[13]
親投稿
nobu divine-creator
でんぺんさんへ その命令だけを使用して、WTALKを複数並べてRUNしますと、順番に読んでくれますが、自分のプログラムの最初に、その命令を追加して、TALKをWTALKに変えても、エラーになってしまいました…。 でも、WAITを使用して数値を調節するだけで、今回のプログラムは自分の期待通りに読んでくれるようになりました♪ なので、WTALKを使用した方法は、また別の機会に挑戦したいと思います。
0そうだね
プレイ済み