我可以在Cocos2D-iPhone游戏中支持VoiceOver吗?

时间:2012-03-27 23:43:21

标签: ios cocos2d-iphone accessibility voiceover

我正在制作一款游戏,玩家通过动作对声音作出反应 - 因为视觉元素不需要播放,许多人闭着眼睛玩,看起来很难完全与VoiceOver兼容。我目前正在使用Cocos2D-iPhone和CocosDenshion进行音频处理,现在我开始考虑如何构建菜单系统来选择级别和配置控件。

在Cocos2D的菜单系统中支持VoiceOver是否相当容易,或者我是否应该尝试在UIKit中创建我没有使用经验的菜单?

2 个答案:

答案 0 :(得分:4)

我不知道Cocos的菜单系统是否支持VoiceOver,但如果没有,你可以自己添加你正在寻找的功能,而不必深入研究很多UIKit工作。您需要做的就是创建一个UIView子类,当您的应用启动时,该子类会添加到您的主窗口中。然后使用UIAccessibilityContainer协议和UIAccessibilityPostNotification来电,以允许用户通过VoiceOver与您的游戏进行互动。

UIAccessibilityContainer协议允许您通知VoiceOver屏幕上当前有哪些界面元素,它们的标签,特征等。然后VoiceOver使用此信息让用户在元素之间滑动并获得对它们的反馈。

当您的游戏更改状态时,您可以更改该协议发回的内容,然后发出

  

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification,nil)

...通知VoiceOver屏幕布局已更改。只需通过VoiceOver说话,比如当你的游戏状态发生变化时,你可以发送不同的通知来说出一些文字:

  

UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification,@“成就解锁!”);

答案 1 :(得分:-3)

无需使用UIKit框架,您可以使用cocos2d本机方法和类来实现此目的。

对于声音选项,我们有SimpleAudioEngine可以使用。您可以使用ALuint类型的ID来区分声音。

ALuint soundEffectID;

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

你必须管理这些效果,我认为你的问题将会得到解决。