какао играет mp3

Любой или оба этих метода могут применяться в зависимости от ситуации.

Значение функции this внутри функции зависит от того, как была вызвана функция. Если вы вызываете функцию как свойство объекта следующим образом:

obj.key2();
//or
obj["key2"]();

Тогда this будет этим объектом.

Но вы можете использовать .call() или .apply() для вызова функции и явно установить this к некоторому другому объекту.

Рассмотрим также:

var obj = {
    key1: "it",
    key2: function(){return this.key1 + " works!"}
};
alert(obj.key2()); // alerts "it works!"

var func = obj.key2;
alert(func())​;     // alerts "undefined works!"

Я настраиваю func для ссылки на ту же функцию, что и obj.key2, но называя ее как func() делает не значение this - obj.

Для получения дополнительной информации смотрите , что MDN должен сказать о this .

13
задан JWWalker 18 July 2010 в 18:45
поделиться

3 ответа

Я написал фреймворк на C ++, который может помочь: http://github.com/sbooth/SFBAudioEngine

Он поддерживает несколько аудиоформатов, имеет довольно удобный API и поставляется с образцом Какао.

Если вас не интересуют сторонние фреймворки, вы, вероятно, будете использовать AudioQueue, чтобы позаботиться о воспроизведении. Для этого вы, вероятно, использовали бы AudioFile для декодирования MP3 и AudioQueue для воспроизведения. У Apple есть пример на http://developer.apple.com/mac/library/samplecode/AudioQueueTools/Introduction/Intro.html

5
ответ дан 1 December 2019 в 17:47
поделиться

Помимо NSSound , вы можете рассмотреть QTMovieView . Это звучит странно, но вы можете иметь скрытый QTMovieView в своем окне и использовать его для воспроизведения MP3.

Добавлено: QTMovieView устарел в ОС 10.9. Поэтому, если вам не нужна поддержка версий ОС до 10.7 (когда AVFoundation пришла на Mac), вам, вероятно, не следует использовать это.

0
ответ дан 1 December 2019 в 17:47
поделиться

Используйте NSSound .

Вы не указали, что вы подразумеваете под «множеством ограничений», поэтому я не знаю, почему это не сработает для вас. Обратите внимание, что по сравнению с Leopard у него намного меньше ограничений; теперь вы можете играть, например, на любом устройстве.

1
ответ дан 1 December 2019 в 17:47
поделиться