gpt4 book ai didi

ios - SKAction playSoundFileNamed 在 500 mp3 时失败

转载 作者:行者123 更新时间:2023-11-29 03:21:38 24 4
gpt4 key购买 nike

在我的应用程序中,我需要使用很多简短的不同 mp3(大约 500 个项目逐一)

所以我使用SKAction playSoundFileNamed

大约 200 声声音后,它崩溃并显示“无法加载资源 - 无法加载资源 s234.mp3”。内存升至 70mb。

如何避免这种情况?

我尝试过的:

  1. 在每次迭代中重新创建声音

    SKAction *mySound=[SKAction playSoundFileNamed:aa waitForCompletion:YES];
  2. 在.m开头创建一个变量

    SKAction *mySound;

并在迭代中重用它

    mySound=[SKAction playSoundFileNamed:aa waitForCompletion:YES];

2。在开始时将所有声音加载到数组中一次

for (int j=0;j<500;j++){
NSString *aa=[NSString stringWithFormat:@"s%d.mp3", j];
[item.sounds addObject:[SKAction playSoundFileNamed:aa waitForCompletion:YES]];
}

...但从未改变 - 它崩溃并且无法加载 mp3。

如何清除内存泄漏?

已编辑我还尝试关闭 ARC 并每次手动释放它。什么都没有改变。

最佳答案

这里的这个小曲子将允许您使用常规的旧 SKAction,但在代码中自定义播放。

https://github.com/pepelkod/iOS-Examples/tree/master/PlaySoundWithVolume

+(SKAction*)playSoundFileNamed:(NSString*)fileName atVolume:(CGFloat)volume waitForCompletion:(BOOL)wait{
// setup audio
NSString* nameOnly = [fileName stringByDeletingPathExtension];
NSString* extension = [fileName pathExtension];
NSURL *soundPath = [[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:nameOnly ofType:extension]];
AVAudioPlayer *player = [[AVAudioPlayer alloc]initWithContentsOfURL:soundPath error:NULL];
[player setVolume:volume];
[player prepareToPlay];

SKAction* playAction = [SKAction runBlock:^{
[player play];
}];
if(wait == YES){
SKAction* waitAction = [SKAction waitForDuration:player.duration];
SKAction* groupActions = [SKAction group:@[playAction, waitAction]];
return groupActions;
}
return playAction;

关于ios - SKAction playSoundFileNamed 在 500 mp3 时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21022433/

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