Pregunta

Sabemos que cuando invocas #.stop() en un AudioBufferNode, entonces no puedes #.start().¿Por qué el comportamiento es así?

Este problema surgió al jugar con la API de WebAudio, como todos descubrimos tarde o temprano al intentar implementar la funcionalidad de pausa.Lo que despertó mi interés fue, claro, que entiendo que es una transmisión y que no se puede simplemente "pausar" una transmisión.¿Pero por qué se destruye?Internamente, ¿no hay un puntero a los datos, o los datos simplemente son enviados al destino y el búfer los olvida?

¿Fue útil?

Solución

No estás llamando a .stop() en un AudioBuffer, estás llamando a .stop() en un BufferSourceNode; el AudioBuffer se puede usar varias veces.

La versión corta es una optimización que permite activar y olvidar la reproducción de buffers de una manera muy liviana: puede crear un reproductor multimedia de nivel superior a su alrededor, pero en sí mismos los BufferSourceNodes son muy livianos.Los datos de sonido en sí no se olvidan y pueden reutilizarse (de hecho, pueden usarse simultáneamente por otros BufferSourceNodes) porque están en el objeto AudioBuffer separado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top