带有图像文件和声音文件的CCSprite

时间:2012-09-09 16:11:00

标签: objective-c image audio cocos2d-iphone ccsprite

我看到如何将图像文件添加到CCSprite但是如何添加音频文件呢?

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

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

更新:

我要做的是将音频文件与每个CCSprite相关联,并在触摸时播放音频文件。 每个CCSprite将播放不同的音频文件。 我试图找出最简单的方法来附加或关联音频文件与CCSprite

4 个答案:

答案 0 :(得分:1)

Cocos2D 中,您可以像这样添加audio file: -

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

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

答案 1 :(得分:1)

添加

#import "SimpleAudioEngine.h"

然后简单

[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"XYZ.mp3"];

答案 2 :(得分: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"];

2)在存储返回值的同时在touchDragged:上播放效果:

// on touchDragged:
soundID = [[SimpleAudioEngine sharedEngine] playEffect:self.sound];

3)使用touchEnded:

停止对soundID的影响
// on touchEnded: cancelled:
[[SimpleAudioEngine sharedEngine] stopEffect:soundID];

注意:此方法更好,因为它允许您一次播放更多声音。


最后备注:

如果您有每个不同精灵的子类(即FishSpriteDogSprite,...等),那么任何给定类的 ALL 实例都具有相同的声音,最好添加静态方法来返回该类的声音名称:

// 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];

答案 3 :(得分:0)

如果您可以将其子类化,那么请执行此操作并为音频文件添加属性。据我所知,不,没有子类化,你不能添加任何无关的信息。但是我不使用cocos2d,所以不要使用它。