gpt4 book ai didi

objective-c - 具有图像文件和声音文件的CCSprite

转载 作者:行者123 更新时间:2023-12-03 00:10:25 25 4
gpt4 key购买 nike

我知道如何将图像文件添加到CCSprite,但是如何也可以添加音频文件?

是我可以存储 map 或字典的属性吗?

仅供引用,我正在移动设备上发布此信息,因此代码现在不可用,将尝试更新我的问题

更新:

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

最佳答案

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

如果您正在播放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:的父类(super class),因此您没有多余的代码:
// on touchDragged:
soundID = [[SimpleAudioEngine sharedEngine] playBackgroundMusic:[[self class] soundName]];

// on touchEnded: cancelled:
[[SimpleAudioEngine sharedEngine] stopEffect:soundID];

关于objective-c - 具有图像文件和声音文件的CCSprite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12340671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com