Flash AS3 - задержка звука OGG (библиотека Adobe Alchemy) - PullRequest
0 голосов
/ 06 февраля 2012

Я хотел, чтобы живые барабаны играли с помощью сочетаний клавиш. Проблема была в том, что 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);

        }
    }
}

1 Ответ

1 голос
/ 06 февраля 2012

У меня была та же проблема со звуковыми файлами в моем проекте Flash CS5.5 с циклами.Я и мой звукорежиссер потратили слишком много времени, чтобы найти быстрое и «бесщелевое» решение для петель в as3.Он сделал файл .aif без каких-либо пробелов, и я импортировал его в свою библиотеку, позвонив из моего основного класса.Затем мы изменили свойства звука и выглядят так:

http://s7.postimage.org/6me47lfzv/Screen_shot_2012_02_06_at_4_35_15_PM.png

в ActionScript я называю файл .aif следующим образом:

var aifSound:AifSound = new AifSound(); 
//AifSound is the name of the file in the ActionScript tab

//creates a new Sound Channel
var scAif:SoundChannel = new SoundChannel();
scAif = aifSound.play(0,999, 1);

ок, этодает мне петлю без перерыва, задержки или осложнений.Попробуйте и оставьте отзыв!

пс: извините за мой плохой английский

Спасибо stackoverflow !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...