CCSprite 带有图像文件和声音文件
Posted
技术标签:
【中文标题】CCSprite 带有图像文件和声音文件【英文标题】:CCSprite with image file and sound file 【发布时间】:2012-09-09 16:10:59 【问题描述】:我知道如何将图像文件添加到 CCSprite,但我还可以添加音频文件吗?
我可以存储地图或字典的属性吗?
仅供参考,我在移动设备上发布此内容,因此现在无法选择代码,将尝试更新我的问题
更新:
我正在尝试将一个音频文件与每个 CCSprite 相关联,然后通过触摸拖动播放音频文件。 每个 CCSprite 将播放不同的音频文件。 我正在尝试找出将音频文件附加或关联到 CCSprite 的最简单方法
【问题讨论】:
【参考方案1】:好的,这是我更喜欢的方法,具体取决于您播放的是“背景音乐”声音还是“效果”声音:
如果您正在播放MP3
声音,即背景音乐:
1) 在精灵构造函数中添加一个参数来分配一个声音文件:
[MySpriteClass spriteWithSound:@"mySound.mp3"];
2) 只需使用:
// on touchDragged:
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:self.sound];
// on touchEnded: touchCancelled:
[[SimpleAudioEngine sharedEngine] stopBackgroundMusic];
注意:这种方法很简单,因为您在任何给定时间只能播放一个 BGM。
如果您播放的是未压缩的声音,即效果:
1) 在精灵构造函数中添加一个参数来分配一个声音文件:
[MySpriteClass spriteWithSound:@"mySound.caf"];
2) 在存储返回值的同时在touchDragged:
上播放效果:
// on touchDragged:
soundID = [[SimpleAudioEngine sharedEngine] playEffect:self.sound];
3) 使用soundID
停止对touchEnded:
的影响:
// on touchEnded: cancelled:
[[SimpleAudioEngine sharedEngine] stopEffect:soundID];
注意:这种方法更好,因为它允许您一次播放更多声音。
最后的话:
如果您有每个不同精灵的子类(即FishSprite
、DogSprite
、...等),这样任何给定类的 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];
【讨论】:
这就是我所需要的,我会在帖子中尝试 +1。谢谢! @PhillPafford 我希望它能工作:) .. 顺便说一句,我刚刚意识到你可能会使用sprite.soundName
而不是self.soundName
,因为触摸处理程序通常不是精灵本身,但它可以就这样吧。【参考方案2】:
添加
#import "SimpleAudioEngine.h"
然后简单
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"XYZ.mp3"];
【讨论】:
感谢您的回答。也许我没有正确地问它,我想做的是将一个音频文件与每个 CCSprite 相关联,然后在触摸时拖动播放音频文件。每个 CCSprite 将播放不同的音频文件。我正在尝试找出将音频文件附加或关联到 CCSprite 的最简单方法 将所有音频名称设置在一个数组中。并为每个精灵设置标签。在标签库上从数组中获取声音文件的名称,然后您可以在 sprite 上播放音频。【参考方案3】:在 Cocos2D 中,您可以像这样添加audio file
:-
[[SimpleAudioEngine sharedEngine] playEffect:@"soundeffect.mp3"];
添加sprite
后,您就可以使用此音频文件了。
【讨论】:
【参考方案4】:如果您可以对它进行子类化,那么就这样做并为音频文件添加一个属性。据我所知,不,没有子类化你不能添加任何无关的信息。但我不使用 cocos2d,所以请谨慎对待。
【讨论】:
以上是关于CCSprite 带有图像文件和声音文件的主要内容,如果未能解决你的问题,请参考以下文章