jrscs@uno.edu (12/18/90)
I am working on a text-to-speech conversion program on the NeXT computer
system using Interface Builder. Everything is coming along fine except for
one problem which I hope someone can help me with. I am having difficulty
synchronizing the highlighting of a word in a window with actually saying the
word. As of now, the relevant code looks like the following:
- readReaderFile
{
char aWord[ 50 ];
int startPos = 0 ,
endPos;
while ( [ self getWordBoundaries:&startPos :&endPos ] == YES )
{
[ [ theDocument docView ] setSel:startPos :endPos ];
[ [ theDocument docView ] getSubstring:aWord start:startPos length:.... ];
speak( aWord , endPos - startPos );
startPos = endPos - 1;
}
return self;
}
*** NOTE : The text is contained in a ScrollView's docView, and hence the
"[ theDocument docView ]" command.
For a short file, what happens is all of the words are spoken first and then
the selections are executed. If I put the "[ .... setSel .... ]" line in a
loop to execute for about ten times, then two words are spoken and one is
highlighted, two are spoken and one is highlighted, .... There must be a way
around this. I think one approach might entail using delegates for the sound
object which stores the sound data for each word: "willPlay" and "didPlay".
But, I can't seem to hook things together. Can someone please give me an idea
on how I can solve this problem.