我正在制作一个玩家通过动作对声音做出反应的游戏——因为不需要视觉元素来玩它,而且很多人闭着眼睛玩,不完全兼容 VoiceOver 似乎很可惜。我目前正在使用 Cocos2D-iPhone 和 CocosDenshion 进行音频,现在我开始考虑如何构建我的菜单系统来选择级别和配置控件。
在 Cocos2D 的菜单系统中支持 VoiceOver 是否相当容易,或者我是否应该考虑尝试在我没有使用经验的 UIKit 中创建我的菜单?
我正在制作一个玩家通过动作对声音做出反应的游戏——因为不需要视觉元素来玩它,而且很多人闭着眼睛玩,不完全兼容 VoiceOver 似乎很可惜。我目前正在使用 Cocos2D-iPhone 和 CocosDenshion 进行音频,现在我开始考虑如何构建我的菜单系统来选择级别和配置控件。
在 Cocos2D 的菜单系统中支持 VoiceOver 是否相当容易,或者我是否应该考虑尝试在我没有使用经验的 UIKit 中创建我的菜单?
我不知道 Cocos 的菜单系统是否支持 VoiceOver,但如果不支持,您可能可以添加您自己正在寻找的功能,而无需深入研究UIKit
。您需要做的就是创建一个UIView
子类,该子类会在您的应用启动时添加到您的主窗口中。然后使用UIAccessibilityContainer
协议和UIAccessibilityPostNotification
调用允许用户通过 VoiceOver 与您的游戏进行交互。
该UIAccessibilityContainer
协议允许您通知 VoiceOver 当前屏幕上的界面元素、它们的标签、它们的特征等。然后,VoiceOver 使用这些信息让用户在元素之间滑动并获得关于它们的反馈。
当您的游戏更改状态时,您可以更改该协议发回的内容,然后发出
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification,无)
...通知 VoiceOver 屏幕布局已更改。如果只是通过 VoiceOver 说话,比如当你的游戏状态发生变化时,你可以发送不同的通知来说出一些文字:
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, @"成就解锁!");
无需使用UIKit
框架,您可以使用本cocos2d
机方法和类来实现它。
对于声音选项,我们有 SimpleAudioEngine 可以使用。您可以使用其类型的 ID 来区分声音ALuint
。
ALuint soundEffectID;
//to start
soundEffectID=[[SimpleAudioEngine sharedEngine] playEffect:@"my sound"];
//to stop
[[SimpleAudioEngine sharedEngine] stopEffect:soundEffectID];
您必须管理这些效果,我认为您的问题将得到解决。