我看到了如何将图像文件添加到 CCSprite,但我怎样才能添加音频文件?
我可以存储地图或字典的属性吗?
仅供参考,我在移动设备上发布此内容,因此代码现在不是一个选项,将尝试更新我的问题
更新:
我想要做的是将一个音频文件与每个 CCSprite 相关联,然后通过触摸拖动播放音频文件。每个 CCSprite 将播放不同的音频文件。我正在尝试找出将音频文件与 CCSprite 附加或关联的最简单方法
我看到了如何将图像文件添加到 CCSprite,但我怎样才能添加音频文件?
我可以存储地图或字典的属性吗?
仅供参考,我在移动设备上发布此内容,因此代码现在不是一个选项,将尝试更新我的问题
更新:
我想要做的是将一个音频文件与每个 CCSprite 相关联,然后通过触摸拖动播放音频文件。每个 CCSprite 将播放不同的音频文件。我正在尝试找出将音频文件与 CCSprite 附加或关联的最简单方法
在Cocos2D中,您可以添加audio file
如下内容:-
[[SimpleAudioEngine sharedEngine] playEffect:@"soundeffect.mp3"];
添加后sprite
,您可以使用此音频文件。
添加
#import "SimpleAudioEngine.h"
然后简单
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"XYZ.mp3"];
好的,这是我更喜欢的方法,具体取决于您播放的是“背景音乐”声音还是“效果”声音:
如果您正在播放MP3
声音,即背景音乐:
1)在sprite构造函数中添加一个参数来分配一个声音文件:
[MySpriteClass spriteWithSound:@"mySound.mp3"];
2)简单地使用:
// on touchDragged:
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:self.sound];
// on touchEnded: touchCancelled:
[[SimpleAudioEngine sharedEngine] stopBackgroundMusic];
注意:这种方法很简单,因为您在任何给定时间只能播放一个 BGM。
1)在sprite构造函数中添加一个参数来分配一个声音文件:
[MySpriteClass spriteWithSound:@"mySound.caf"];
touchDragged:
2)存储返回值时播放效果:
// on touchDragged:
soundID = [[SimpleAudioEngine sharedEngine] playEffect:self.sound];
3)停止使用touchEnded:
效果soundID
:
// on touchEnded: cancelled:
[[SimpleAudioEngine sharedEngine] stopEffect:soundID];
注意:这种方法更好,因为它允许您一次播放更多声音。
最后评论:
如果您有每个不同精灵的子类(即 , FishSprite
, DogSprite
... 等),这样任何给定类的所有实例都具有相同的声音,最好添加静态方法来返回该类的声音名称:
// somewhere in DogSprite.m
+ (NSString *)soundName {
return @"bark.caf";
}
为了完整起见,添加一个实现 , 的超类touchDragged:
,touchEnded:
这样您就没有多余的代码:
// on touchDragged:
soundID = [[SimpleAudioEngine sharedEngine] playBackgroundMusic:[[self class] soundName]];
// on touchEnded: cancelled:
[[SimpleAudioEngine sharedEngine] stopEffect:soundID];
如果您可以对其进行子类化,则执行此操作并为音频文件添加一个属性。据我所知,不,没有子类化就不能添加任何无关信息。但我不使用 cocos2d,所以请谨慎对待。