package {
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.display.StageScaleMode;
    import flash.events.ProgressEvent;
    
    import ws.tink.core.Library;
    import ws.tink.events.LibraryEvent;
    import ws.tink.managers.LibraryManager;

    public class LibraryExample extends Sprite
    {
        
        [Embed(source="/Circles.swf", mimeType="application/octet-stream")]
        private const Circles:Class;
        
        [Embed(source="/Hexagons.swf", mimeType="application/octet-stream")]
        private const Hexagons:Class;
            
        public function LibraryExample()
        {
            stage.scaleMode = StageScaleMode.NO_SCALE;
            
            var library:Library;
            
            library = LibraryManager.libraryManager.createLibrary( "shapesLibrary" );
            library.addEventListener(LibraryEvent.EMBED_COMPLETE, onShapesLibraryEmbedComplete, false, 0, true );
            library.embedSWFS( Circles, Hexagons );
            
            library = LibraryManager.libraryManager.createLibrary( "ballsLibrary" );
            library.addEventListener( LibraryEvent.LOAD_COMPLETE, onBallsLibraryLoadComplete, false, 0, true );
            library.addEventListener( ProgressEvent.PROGRESS, onBallsLibraryProgress, false, 0, true );
            library.loadSWFS( "Soccer.swf", "Football.swf" );
        }
        
        private function onShapesLibraryEmbedComplete( event:LibraryEvent ):void
        {
            trace( "onShapesLibraryEmbedComplete" );
            
            // This is an example to show how to retrieve a Library.
            // You could store the library in a class variable to avoid this, or use event.target in this case.
            var library:Library = LibraryManager.libraryManager.getLibrary( "shapesLibrary" );
            library.removeEventListener( LibraryEvent.EMBED_COMPLETE, onShapesLibraryEmbedComplete );

            var AssetClass:Class;
            
            // Create BitmapData's
            AssetClass = library.getDefinition( "CircleBitmapData" );
            var circleBitmapData:BitmapData = BitmapData( new AssetClass( 0, 0 ) );
            var circleBitmap:Bitmap = new Bitmap( circleBitmapData );
            
            AssetClass = library.getDefinition( "HexagonBitmapData" );
            var hexagonBitmapData:BitmapData = BitmapData( new AssetClass( 0, 0 ) );
            var hexagonBitmap:Bitmap = new Bitmap( hexagonBitmapData );
            hexagonBitmap.x = 150;
            
            // Create MovieClip's
            AssetClass = library.getDefinition( "CircleMovieClip" );
            var circleMovieClip:MovieClip = MovieClip( new AssetClass() );
            circleMovieClip.x = 375;
            circleMovieClip.y = 75;
            
            AssetClass = library.getDefinition( "HexagonMovieClip" );
            var hexagonMovieClip:MovieClip = MovieClip( new AssetClass() );
            hexagonMovieClip.x = 525;
            hexagonMovieClip.y = 75;
            
            addChild( circleBitmap );
            addChild( hexagonBitmap );
            addChild( circleMovieClip );
            addChild( hexagonMovieClip );
        }
        
        private function onBallsLibraryProgress( event:ProgressEvent ):void
        {
            trace( "onBallsLibraryProgress", event.bytesLoaded, event.bytesTotal );
        }
        
        private function onBallsLibraryLoadComplete( event:LibraryEvent ):void
        {
            trace( "onBallsLibraryLoadComplete" );
            
            // This is an example to show how to retrieve a Library.
            // You could store the library in a class variable to avoid this, or use event.target in this case.
            var library:Library = LibraryManager.libraryManager.getLibrary( "ballsLibrary" );
            library.removeEventListener( ProgressEvent.PROGRESS, onBallsLibraryProgress );
            library.removeEventListener( LibraryEvent.LOAD_COMPLETE, onBallsLibraryLoadComplete );
            
            var AssetClass:Class;
            
            // Create BitmapData's
            AssetClass = library.getDefinition( "SoccerBitmapData" );
            var soccerBitmapData:BitmapData = BitmapData( new AssetClass( 0, 0 ) );
            var soccerBitmap:Bitmap = new Bitmap( soccerBitmapData );
            soccerBitmap.y = 150;
            
            AssetClass = library.getDefinition( "FootballBitmapData" );
            var footballBitmapData:BitmapData = BitmapData( new AssetClass( 0, 0 ) );
            var footballBitmap:Bitmap = new Bitmap( footballBitmapData );
            footballBitmap.x = 150;
            footballBitmap.y = 150;
            
            // Create MovieClip's
            AssetClass = library.getDefinition( "SoccerMovieClip" );
            var soccerMovieClip:MovieClip = MovieClip( new AssetClass() );
            soccerMovieClip.x = 375;
            soccerMovieClip.y = 225;
            
            AssetClass = library.getDefinition( "FootballMovieClip" );
            var footballMovieClip:MovieClip = MovieClip( new AssetClass() );
            footballMovieClip.x = 525;
            footballMovieClip.y = 225;
            
            addChild( soccerBitmap );
            addChild( footballBitmap );
            addChild( soccerMovieClip );
            addChild( footballMovieClip );
        }
    }
}