FliteController внутри цикла

Итак, у меня есть этот цикл:

for (int i =0; i< ([rounds_words count]-1); i++){
  [self.fliteController say:[rounds_words objectAtIndex:(i)] withVoice:self.slt];
}

Где array_o_words - это массив строк, которые я хотел бы использовать в флайте движка OpenEars TtS.

Я следовал инструкциям на http://www.politepix.com/openears/, но, конечно, это просто говорит о том, что может быть только один экземпляр. Я попытался сбросить fliteController = nil, но это просто не дает работать вообще.

Какой-нибудь совет, чтобы заставить петлю работать?

2 ответа

Решение

Разработчик OpenEars здесь. Для текущей реализации FliteController вы получите желаемые результаты, произнося строку NSString в первом индексе, ожидая запуска метода делегата OpenEarsEventsObserver fliteDidFinishSpeaking, говоря NSString при следующем индексе и т. Д.

Цикл выглядит так, как будто он должен работать нормально, что наводит меня на мысль, что проблема существует в другом месте. Поскольку вы говорите, что в каждый момент времени может быть только один экземпляр рассматриваемого объекта, я бы предположил, что вам придется придумывать какой-либо обработчик завершения для каждого события, чтобы вы знали, с какой точки начинать следующее событие.

Кроме того, вы правы, что передача nil объекту в цикле нарушит работу. Это в основном похоже на циклический перебор массива и указание каждому объекту начинать, а затем сразу же указывать указанному объекту нулевое значение.

Примечание: если вы хотите выполнить операцию для каждого элемента в вашем массиве, учтите следующие изменения.

Использование:

for (int i =0; i < ([rounds_words count]); i++)

В текущем состоянии токовая петля всегда будет длиться один короткий.

Другие вопросы по тегам