Я хотел создать библиотеку для зацикливания звука, которая не полагалась на события COMPLETE. Я решил создать свою собственную библиотеку дополнений постоянных сообщений . Посмотрите оригинальный проект постоянная волна3 от MaxL0rd . Моя работа в процессе, и она выполняет свою работу, на этом уровне байтов (без таймеров цикла или чего-то еще). Он работает, беря звук с начальной и конечной точками цикла. Затем он клонирует выборку цикла несколько раз в зависимости от времени, указанного в секундах. Это должно быть прямо в использовании. Это код для класса Main.as в
Файл «looping» в папке «examples»:
package
{
// Imports.
import com.greensock.events.LoaderEvent;
import com.greensock.loading.LoaderMax;
import com.greensock.loading.MP3Loader;
import flash.display.Sprite;
import flash.events.Event;
import com.greensock.TweenMax;
import com.SW3.gadget.LoopGadget;
import flash.media.Sound;
// Class.
public class Main extends Sprite
{
// Vars.
private var loader:LoaderMax;// Using LoaderMax for ease of use.
// Constructor.
public function Main()
{
trace("Main");
loader = new LoaderMax( { name:"audio", onComplete:onSoundsLoaded } );
loader.append( new MP3Loader( "assets/Beat.mp3", { autoPlay:false } ) );
loader.append( new MP3Loader( "assets/Clap.mp3", { autoPlay:false } ) );
loader.append( new MP3Loader( "assets/Boom.mp3", { autoPlay:false } ) );
loader.load();
}
private function onSoundsLoaded(e:LoaderEvent):void
{
trace("onSoundsLoaded");
var looping:LoopGadget = new LoopGadget;
looping.addLoopSound( "Beat", e.currentTarget.content[ 0 ] as Sound, 0, 10 );
looping.addLoopSound( "Clap", e.currentTarget.content[ 1 ] as Sound, 0, 10 );
//looping.addLoopSound( "Boom", e.currentTarget.content[ 2 ] as Sound, 0, 10 ); // Commented out to test possible error.
looping.playLoop( "Beat" );// Play the "Beat" loop.
looping.playLoop( "Clap" );// Play the "Clap" loop.
looping.stopLoop( "Beat" );// Stop the "Beat" loop.
looping.playLoop( "Beat" );// Play the "Beat" loop.
looping.playLoop( "Beat" );// Play the "Beat" loop again to test if it would error out..
looping.stopAllLoops();// Stop all the loops.
looping.playLoops( [ "Beat", "Clap", "Boom" ] );// Play all the loops. Test to see if "Boom" will error out.
}
}
}
Проверьте исходные файлы здесь:
https://github.com/charlesclements/standingwave3-addons