Я хотел, чтобы живые барабаны играли с помощью сочетаний клавиш. Проблема была в том, что MP3 не достаточно хорош в этом случае (кодировщики добавляют случайное молчание в начале звука), а также сама флэш-память делает задержку (я попытался использовать уже буферизованный файл с воспроизведением (selected_start_point_in_miliseconds)). Таким образом, мое решение - OGG (этот формат без пробелов).
Я использую скомпилированный SWC-файл из библиотеки Adobe Alchemy и простой интерфейс для него . Все работает нормально, файл OGG воспроизводится, но все равно имеет большую задержку - независимо от того, загружен ли он внешним или встроенным, а также первый или n раз. Мне нужно решение, как заставить звук воспроизводиться так же быстро, как при нажатии клавиш.
Вот мой очень простой пример кода:
import flash.display.Sprite;
import flash.events.*;
import flash.utils.ByteArray;
import flash.events.SampleDataEvent;
import com.mauft.OggLibrary.OggStream;
import com.mauft.OggLibrary.OggEmbed;
public class ogg extends Sprite
{
[Embed(source="/drumssnare2.ogg",mimeType="application/octet-stream")] private var OGG_FILE:Class //Embed Ogg file as binary stream
public function ogg()
{
var gameinfo:Sprite=new Sprite();
gameinfo.graphics.beginFill(0x000000,1);
gameinfo.graphics.drawRect(0,0,240,16);
gameinfo.graphics.endFill();
gameinfo.addEventListener(MouseEvent.CLICK, playOGG);
addChild(gameinfo);
//var streamTest:OggStream=new OggStream("http://127.0.0.1/~7z/drumssnare2.ogg");
var embedTest:OggEmbed=new OggEmbed((new OGG_FILE) as ByteArray) //Create new instance of OggEmbed
function playOGG():void
{
//var streamTest:OggStream=new OggStream("http://www.vorbis.com/music/Hydrate-Kenny_Beltrey.ogg")
//streamTest.play(0);
embedTest.play(0);
}
}
}