0

我看到了如何将图像文件添加到 CCSprite,但我怎样才能添加音频文件?

我可以存储地图或字典的属性吗?

仅供参考,我在移动设备上发布此内容,因此代码现在不是一个选项,将尝试更新我的问题

更新:

我想要做的是将一个音频文件与每个 CCSprite 相关联,然后通过触摸拖动播放音频文件。每个 CCSprite 将播放不同的音频文件。我正在尝试找出将音频文件与 CCSprite 附加或关联的最简单方法

4

4 回答 4

1

Cocos2D中,您可以添加audio file如下内容:-

[[SimpleAudioEngine sharedEngine] playEffect:@"soundeffect.mp3"];

添加后sprite,您可以使用此音频文件。

于 2012-09-09T17:30:29.613 回答
1

添加

#import "SimpleAudioEngine.h"

然后简单

[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"XYZ.mp3"];
于 2012-09-11T11:14:56.207 回答
1

好的,这是我更喜欢的方法,具体取决于您播放的是“背景音乐”声音还是“效果”声音:

如果您正在播放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];
于 2012-09-11T12:54:08.787 回答
0

如果您可以对其进行子类化,则执行此操作并为音频文件添加一个属性。据我所知,不,没有子类化就不能添加任何无关信息。但我不使用 cocos2d,所以请谨慎对待。

于 2012-09-09T16:58:31.560 回答