The code below could be used to say help Pre-Kindergarten and Kindergarten children learn about the numerals and numbers from one to 9. The problem is that this age group would be prone to just pressing buttons and it is easy to get the audio out of sync with the graphics. I have played around with Pause[different values] placed after the Speak statements and Enabled->False/Enabled->True as well as SynchronousUpdating -> False. I was hoping that someone might be able to tell me whether I was on the right track or if there is a different function I should look at. I would also appreciate if someone could tell me a way to follow the flow of the way the code is read by the computer (I have tried Trace with little success), that would give me an idea of where to best place Pauses, etc. (I want to thank John Fultz for contributions previously made to this manipulate.) Thank You
Manipulate[
Pane[Column[{Text[
Row[If[n < 2, {Spacer[160],
Style[nnames[[n]], Bold, Large, Hue[RandomReal[]]],
Style[" Ball", Bold, Large, Green]}, {Spacer[160],
Style[nnames[[n]], Bold, Large, Hue[RandomReal[]]],
Style[" Balls", Bold, Large, Green]}]]],
Row[Table[Graphics[{
Darker[Green], Disk[],
Text[Style[numerals[[ r]], Orange, "Label", 48], {0,
0}]}], {r, 1, n}]
]}, BaseStyle -> {LinebreakAdjustments -> {1., 10, 0, 0,
10}}], {525, 300}],
Row[{Button[
" Start \n ", {n = 1,
Speak["lets count the numbers 1 to 9 out loud. One"]}],
Spacer[55],
Button[
"\[FilledLeftTriangle]\[FilledLeftTriangle] Start Over", {n = 1,
Speak["one"]}],
Button[
"\[FilledLeftTriangle] Less", {If[
n < 2, {n = 1,
Speak["Today we are just working on the numbers from one to \
nine."]}, {n -= 1, Speak[n]}]}], Spacer[10],
Button[
"More \[FilledRightTriangle]", {If[
n > 8, {n = 9,
Speak["Lets learn the numbers from one to nine before we go \
on."]}, {n += 1, Speak[n]}]}],
Button[
"All \[FilledRightTriangle]\[FilledRightTriangle]", {n = 9,
Speak["nine"]}]
}],
{{n, 9, " "}, ControlType -> None},
Initialization :> (
numerals = {"1", "2", "3", "4", "5", "6", "7", "8", "9"};
nnames = {"One", "Two", "Three", "Four", "Five", "Six", "Seven",
"Eight", "Nine"};)]