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

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


最后的话:

如果您有每个不同精灵的子类(即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];

【讨论】:

这就是我所需要的,我会在帖子中尝试 +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 带有图像文件和声音文件的主要内容,如果未能解决你的问题,请参考以下文章

使用原始文件在列表视图中添加图像视图

为啥播放视频文件只有声音没有图像

使用图像和声音文件夹编译 Python 代码?

Javascript 声音开始/停止和图像更改

应用部署

在 CCSprite 中淡入图像?