2012-03-27 3 views
4

Я делаю игру, в которой игрок реагирует на звуки через движение - видя, что визуальный элемент не нужен, чтобы играть в него, а многие играют с закрытыми глазами, кажется, стыдно не быть полностью совместимым с VoiceOver. В настоящее время я использую Cocos2D-iPhone и CocosDenshion для аудио, и теперь я начинаю думать о том, как я буду строить свою систему меню, чтобы выбирать уровни и настраивать элементы управления.Могу ли я поддерживать VoiceOver в своей игре Cocos2D-iPhone?

Можно ли легко поддерживать VoiceOver в системе меню Cocos2D, или я должен попытаться создать мои меню в UIKit, которые у меня нет опыта использования?

ответ

4

Я не знаю, поддерживает ли система меню Cocos VoiceOver, но если это не так, вы можете добавить функциональность, которую вы ищете, не вникая в много работы UIKit. Все, что вам нужно сделать, это создать подкласс UIView, который добавляется в главное окно при запуске приложения. Затем используйте протокол UIAccessibilityContainer и вызовы UIAccessibilityPostNotification, чтобы пользователи могли взаимодействовать с вашей игрой через VoiceOver.

Протокол UIAccessibilityContainer позволяет информировать VoiceOver о том, какие элементы интерфейса находятся на экране, их метки, их черты и т. Д. VoiceOver затем использует эту информацию, чтобы пользователи могли прокручивать между элементами и получать обратную связь от них.

Когда ваша игра изменяет состояние, вы можете изменить то, что протокол посылает обратно, а затем выдать

UIAccessibilityPostNotification (UIAccessibilityLayoutChangedNotification, ноль)

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

UIAccessibilityPostNotification (UIAccessibilityAnnouncementNotification, @ «Достижение разблокировано!»);

-3

Не нужно идти с картой UIKit. Вы можете использовать собственные методы и класс cocos2d, чтобы реализовать это.

Для опции звука у нас есть SimpleAudioEngine, который можно использовать. вы можете различать звук, используя свой ID, который имеет тип ALuint.

ALuint soundEffectID;

//to start 
soundEffectID=[[SimpleAudioEngine sharedEngine] playEffect:@"my sound"]; 
//to stop 
[[SimpleAudioEngine sharedEngine] stopEffect:soundEffectID]; 

Вам необходимо управлять этим эффектом, и я думаю, что ваша проблема будет решена.

+0

Что нужно сделать SimpleAudioEngine для поддержки навигации VoiceOver на устройствах iOS? – Blixxy

Смежные вопросы