|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.06.2010, 21:54 | #1 |
Пользователь
Регистрация: 02.09.2009
Сообщений: 56
|
Озвучка. Как поставить паузу?
Мне нужно создать калькулятор и озвучить его. Калькулятор у меня есть и озвучка тоже. Одна проблема только у меня. Я хочу сделать так, чтобы пользователь ввел значение числа, а потом Microsoft Anna его прочитала, а у меня получается так: например, пользователь вводить число 59. Сначала он вводит число 5 , а потом 9. Программа читает у меня следующим образом: сначала произносит 5 по мере ввода, а потом 59. Как сделать,чтобы промежуточный результат не читался?
Я написала в обработчике textBox такой код Код:
Thread.Sleep(2000), но у меня тормозит тогда ввод чисел. Помогите, пожалуйста. |
08.06.2010, 22:11 | #2 |
Форумчанин
Регистрация: 04.07.2007
Сообщений: 549
|
Наверное дело в событии, так как оно и запускает произношение числа каждый раз когда меняется текст в текстбоксе.
Я бы сделал наверное так: Сделал бы таймер, который бы читал текст через 1,5 сек. (надо тестить, число могло быть другое), если за это время не ввели следующий символ, то Анна читает его =). Если ввели, то таймер выключается не успев сработать и заново включается. Или: Просто когда нажимаешь +, -, /, *, = Анна бы читала то что в текстбоксе, ну и плюс, то что нажали (например: 239 умножить...). А иначе как определишь, что пользователь не посидит ещё минуты 3 и не добавит цифру. Что-то типа того Код:
Последний раз редактировалось Casper-SC; 08.06.2010 в 22:34. |
08.06.2010, 23:02 | #3 |
Пользователь
Регистрация: 02.09.2009
Сообщений: 56
|
А как сделать проверку введен ли следующий символ?
|
08.06.2010, 23:17 | #4 |
Форумчанин
Регистрация: 04.07.2007
Сообщений: 549
|
Код:
Можно сделать переменную одну в которой всегда будет предыдущее число в текстовом представлении (String формате) и если в той переменной длина текста меньше чем в текстбоксе, то значит добавили цифру, если меньше, то значит нажали стереть все цифры, сразу же выключаем таймер |
08.06.2010, 23:26 | #5 |
Пользователь
Регистрация: 02.09.2009
Сообщений: 56
|
Хочу сделать как-то так, но звук не производится=(
private void textBox1_TextChanged(object sender, EventArgs e) { tmr.Start(); tmr.Elapsed += new ElapsedEventHandler(textBox1_TextCh anged); if (tmr.Interval == 2000) { tmr.Stop(); m_voice.Voice = m_voice.GetVoices(string.Format("Na me={0}", "Microsoft Anna"), "Language=409").Item(0); m_voice.Speak(textBox1.Text, SpeechVoiceSpeakFlags.SVSFlagsAsync ); } } |
09.06.2010, 02:22 | #6 |
Форумчанин
Регистрация: 04.07.2007
Сообщений: 549
|
У меня так вполне работает то что я задумал, только конечно WMPLib использовать для целей озвучки это жёстко =), ну я так тестил. Пока я в течении 4-ёх секунд жму какую нибудь кнопку, а фокус на текст боксе, то музыка не прекращает играть:
Код:
Код:
Последний раз редактировалось Casper-SC; 09.06.2010 в 03:19. |
10.06.2010, 00:03 | #7 |
Пользователь
Регистрация: 02.09.2009
Сообщений: 56
|
Большое человеческое спасибо. Ты мне очень помог)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Таймер на паузу. | GrindeX | Общие вопросы Delphi | 7 | 27.11.2009 00:03 |
как сделать паузу (или задержку) в цыкле : с# | Natok | Помощь студентам | 7 | 30.05.2009 12:55 |
Озвучка | Orodret | Общие вопросы C/C++ | 2 | 18.04.2009 14:45 |
Таймер на паузу | yulia | Общие вопросы Delphi | 16 | 02.12.2008 18:09 |
Как атрибут поставить | delphin100 | Общие вопросы Delphi | 9 | 14.01.2008 23:15 |