View Manager

by paulstamp1
♥0 | Line 84 | Modified 2012-10-24 20:44:01 | MIT License
play

ActionScript3 source code

/**
 * Copyright paulstamp1 ( http://wonderfl.net/user/paulstamp1 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/dNzc6
 */

package {
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            // write as3 code here.. 
                   
            ViewManager.attachTo( stage );
            ViewManager.mapView( MyConcreteView, ViewNames.MY_CONCRETE_VIEW );
            ViewManager.addLayer( LayerNames.ROOT );
            
            ViewManager.instantiateView( ViewNames.MY_CONCRETE_VIEW );
            ViewManager.addViewToLayer( ViewNames.MY_CONCRETE_VIEW, LayerNames.ROOT );
            ViewManager.showView( ViewNames.MY_CONCRETE_VIEW );
        }
    }
}

class ViewNames{
    public static const MY_CONCRETE_VIEW:String = "myConcreteView"; 
}

class LayerNames{
    public static const ROOT:String = "root";
}


import flash.utils.Dictionary;
import flash.display.DisplayObjectContainer;
import flash.display.DisplayObject;

class ViewManager {
    
    private static var _root:Sprite = new Sprite();
    private static var _viewMap:Dictionary = new Dictionary();
    private static var _layerMap:Dictionary = new Dictionary();   
  
    public static function attachTo( mc:DisplayObjectContainer ):void
    {
        mc.addChild( _root ); 
    }

    public static function mapView( viewClass:Class, viewName:String ):void{
        _viewMap[viewName] = { instance:null, viewClass:viewClass, name:viewName };
    }
    
    public static function addLayer( layerName:String ):void{
        _layerMap[layerName] = new Sprite();
        _root.addChild( _layerMap[layerName] );
    }
    
    public static function showView( viewName:String ):void{        
        if( _viewMap[viewName] && _viewMap[viewName].instance != null ){
            _viewMap[viewName].instance.animate(ViewAnimation.VIEW_BECAME_VISIBLE );
        }      
    }

    public static function hideView( viewName:String ):void{
        if( _viewMap[viewName] && _viewMap[viewName].instance != null ){
            _viewMap[viewName].instance.animate(ViewAnimation.VIEW_BECAME_HIDDEN );
        } 
    }
    
    public static function instantiateView( viewName:String ):void{
        if( _viewMap[viewName] && _viewMap[viewName].instance == null ){
            var instance:View = new _viewMap[viewName].viewClass();
        }
    }

    public static function destroyView( viewName:String ):void{
        if( _viewMap[viewName] ){
            _viewMap[viewName].instance = null;
        }
    }
    
    public static function addViewToLayer( viewName:String, layerName:String ):void{
        if( _viewMap[viewName] && _viewMap[viewName].instance != null && _layerMap[layerName] != null ){
            _layerMap[layerName].addChild( _viewMap[viewName] );
        }
    }
    
    public static function removeViewFromLayer( viewName:String ):void{
        if( _viewMap[viewName] && _viewMap[viewName].instance &&  _viewMap[viewName].instance.parent ){
            _viewMap[viewName].instance.parent.removeChild( _viewMap[viewName].instance );
        }
    }
}

import flash.display.Sprite;

class View extends Sprite {
    public function animate( instruction:String ):void{
        
    }
}

class MyConcreteView extends View{
    
    public function MyConcreteView(){
        this.graphics.beginFill( 0x009900 );
        this.graphics.drawRect(0,0,1000,1000);
        this.graphics.endFill();
    }

}

class ViewAnimation {
    public static const VIEW_BECAME_VISIBLE:String = "viewBecameVisible";
    public static const VIEW_BECAME_HIDDEN:String = "viewBecameHidden";
}