View Manager
♥0 |
Line 84 |
Modified 2012-10-24 20:44:01 |
MIT License
archived:2017-03-20 16:09:58
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";
}