如何在Iphone中创建钢琴UI?

Nir*_*raj 3 iphone piano

我是newbei在创建这样的基于钢琴的UI应用程序.我正在开发一个我必须使用钢琴的应用程序.如何在Iphone中创建钢琴UI?如何使用Interface builder创建它?或者还有其他方法来制作钢琴吗?

我迫切需要创建这样的UI,如果任何正文有任何解决方案或任何有用的代码或任何链接,将不胜感激.

谢谢,Niraj

Tyl*_*ler 9

版本1更容易编码,不那么优雅.

在xcode中启动基于视图的项目,并使用界面构建器,编辑MyProjectViewController.xib,将形状和颜色的一系列按钮组合在一起,类似于屏幕键盘.

编辑MyProjectViewController.h.m添加一堆带有如下签名的方法:

- (IBAction) playMiddleC: (id) sender;
- (IBAction) playMiddleD: (id) sender;
- (IBAction) playMiddleE: (id) sender;
Run Code Online (Sandbox Code Playgroud)

现在,您可以返回界面构建器,右键单击并将每个按钮拖动到File的Owner对象(类型MyProjectViewController).执行此操作时,会弹出一个菜单,询问将按钮附加到哪个方法 - 为该键选择适当的方法.

现在为要播放的每个键添加声音文件.例如,假设您有一个名为midC.caf(以线性PCM格式编码,作为有效声音文件格式之一)的文件.将该文件复制到项目目录中,然后右键单击Resources文件夹中的(在xcode中),然后选择Add> Existing Files ..然后选择声音文件,将其添加到项目中.

接下来,您需要将AudioToolbox库添加为依赖项.通过右键单击Frameworks文件夹,然后选择Add> Existing Frameworks ..然后浏览AudioToolbox库并选择它来完成此操作.

同时,回来MyProjectViewController.m,添加如下代码:

#import <AudioToolbox/AudioServices.h>

// (Later...)

- (IBAction) playMiddleC: (id) sender {
  NSString* path = [[NSBundle mainBundle]
                    pathForResource:@"midC" ofType:@"caf"];
  NSURL* url = [NSURL URLWithString:path];
  SystemSoundID midC;
  AudioServicesCreateSystemSoundID((CFURLRef)url, &midC);
  AudioServicesPlaySystemSound(midC);
}
Run Code Online (Sandbox Code Playgroud)

命令 - 输入编译并运行,并制作一些音乐!

版本2稍微优雅一点.

以编程方式构建一个键盘UI,其中一个数组用于白键,另一个用于黑色(因为它们的坐标略有不同).我推荐使用UIButton带有图像的自定义类型,用于每种按键类型的按下和非按压版本(黑色,C/F,B/E和A/D/G,它们是中间白键 - 我在这里考虑了键缩进).

这将允许您在数组中存储指向这些按钮的指针,并且具有可以为任何键播放声音的单个方法,还可以将声音ID存储在相应的数组中.

您可能认为您想要以编程方式创建声音,因为它们本质上是数学上的.但是AudioQueue你会使用的服务比上面的代码要处理的工作要多得多,所以我实际上建议只使用声音字节,即使在"优雅"版本中也是如此.无论如何,它甚至可能听起来更好.

顺便说一句,你的问题听起来像是你认为这是一个快速简单的入门应用程序,但我不太确定.学习开发iPhone应用程序很有趣,但需要花费一些时间和精力才能做好.如果您对入门应用程序的想法感兴趣,我建议您一次查找能够运用一项新编程技能的内容,例如学习使用无处不在的技能UITableView,或者使用快速应用程序让您拍照并将其附加到例如,一封电子邮件(这很简单,因为iPhone SDK非常支持拍照和电子邮件撰写).

玩得开心!