Использование эффекта предварительной загрузки в SimpleAudioEngine - PullRequest
1 голос
/ 16 декабря 2011

Я читал о предварительной загрузке звуков в SimpleAudioEngine через

[[SimpleAudioEngine sharedEngine] preloadEffect:@"bell.wav"];

Но при этом возникают утечки памяти, которые я читал на нескольких сайтах.На некоторых веб-сайтах это использовалось так: -

-(void)loadSoundFilesInBackground
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    [[SimpleAudioEngine sharedEngine] preloadEffect:@"bell.wav"];

    [pool release];
}

Каков наилучший способ загрузки звуковых файлов в фоновом режиме через SimpleAudioEngine?Какая польза от NSAutoreleasePool здесь?Действительно ли необходимо загружать звуковые файлы в фоновом режиме?Я не смог найти удовлетворительного ответа ни на одном сайте.

1 Ответ

2 голосов
/ 16 декабря 2011

Поскольку большая часть информации о Cocos2D довольно старая, я бы не поверил веб-сайту, на котором написано, что этот метод приводит к утечке памяти.Во-первых, это, возможно, уже исправлено.Во-вторых, это не может быть «настоящей» утечкой в ​​конце концов.Некоторые разработчики просто не знают, как читать графики Instruments или тестировать проблему изолированно.

Чтобы ответить на ваш первый вопрос: вы предварительно загружаете звуковые эффекты, чтобы файл не загружался первымраз вы играете этот звук.Например, если вы не предварительно загрузили 10 различных звуков «стрельбы» для каждого типа врага в своей игре, каждый раз, когда новый тип врага стреляет в первый раз, вы можете заметить небольшую задержку.Это может быть незначительным или даже останавливать вашу игру на несколько десятых секунды, и может привести к тому, что средства управления не будут реагировать или к внезапной смерти, потому что игрок не готов к таким неожиданным сбоям.

Таким образом, игры с быстрым темпом должны предварительно загружать все игровые звуковые эффекты до начала игры.

...