///////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2011-2012 Wolfgang Kowarschick // // Dieses Werk darf unter den Bedingungen der Creative Common Lizenz // Attribution-NonCommercial-ShareAlike 3.0 Unported // (CC BY-NC-SA 3.0: http://creativecommons.org/licenses/by-nc-sa/3.0/) // vervielfaeltigt, verbreitet, publiziert und modifiziert werden. ///////////////////////////////////////////////////////////////////////////////// package zoomapp { import flash.display.Sprite; import flash.display.Stage; import wk.component.asset.Assets; import wk.component.asset.service.AssetLoaderService; import wk.component.asset.view.AssetViewContainer; import wk.component.background.Background; import wk.component.background.service.BackgroundService; import wk.component.background.view.BackgroundView; import zoomapp.controller.ZoomAppAssetControllerCircle; import zoomapp.controller.ZoomAppAssetControllerCircleMulti; import zoomapp.controller.ZoomAppAssetControllerRectangle; import zoomapp.controller.ZoomAppAssetControllerRectangleMulti; import zoomapp.data.ZoomAppAssetDataCircle; import zoomapp.data.ZoomAppAssetDataRectangle; import zoomapp.logic.ZoomAppAssetLogic; import zoomapp.logic.ZoomAppAssetLogicCircle; import zoomapp.logic.ZoomAppAssetLogicRectangle; import zoomapp.service.ZoomAppService; import zoomapp.view.ZoomAppAssetViewCircle; import zoomapp.view.ZoomAppAssetViewCircleMulti; import zoomapp.view.ZoomAppAssetViewRectangle; import zoomapp.view.ZoomAppAssetViewRectangleMulti; /** * @autor Wolfgang Kowarschick * @category class * @langversion 3.0 */ public class ZoomAppComponents { ///////////////////////////////////////////////////////////////////////////// // Private members ///////////////////////////////////////////////////////////////////////////// private var v_stage: Stage; private var v_service: ZoomAppService = new ZoomAppService(); private var v_logic: ZoomAppAssetLogic = new ZoomAppAssetLogic(); private var v_controller_circle: ZoomAppAssetControllerCircle = new ZoomAppAssetControllerCircle(); private var v_controller_rectangle: ZoomAppAssetControllerRectangle = new ZoomAppAssetControllerRectangle(); private var v_background: Background; private var v_assets: Assets = new Assets(); ///////////////////////////////////////////////////////////////////////////// // Methods ///////////////////////////////////////////////////////////////////////////// public function init(): void { v_service.backgroundService = v_background.service; v_service.assetsService = v_assets.service; /* // Alternative, wenn v_logic nicht als Logik-Komponente // registriert wird */ v_background.stage = v_stage; v_assets.background = v_background.view; /* Alternative 1: * - ein Data-Objekt je Asset (Erzeugung per Konstruktor) * - ein Logik-Objekt für alle Assets * - zwei Controller-Objekte (je ASSET_TYPE eines) * - ein View-Objekt je Asset (Erzeugung per Konstruktor) * Alle notwendigen Beziehungen werden von Assets.as automatisch erstellt. * Voraussetzung: Die LDVCS-Objekte implementieren die entsprechenden * Setter-Methoden (Interfaces!). v_assets.registerData (ZoomAppAssetDataCircle.ASSET_TYPE, ZoomAppAssetDataCircle); v_assets.registerData (ZoomAppAssetDataRectangle.ASSET_TYPE, ZoomAppAssetDataRectangle); v_assets.registerLogic (AssetViewContainer.DEFAULT, v_logic); // Alternative: Anstelle der Registrierung als DEFAULT: //v_assets.registerLogic // (ZoomAppAssetDataCircle.ASSET_TYPE, v_logic); //v_assets.registerLogic // (ZoomAppAssetDataRectangle.ASSET_TYPE, v_logic); v_assets.registerController (ZoomAppAssetDataCircle.ASSET_TYPE, v_controller_circle); v_assets.registerController (ZoomAppAssetDataRectangle.ASSET_TYPE, v_controller_rectangle); v_assets.registerView (ZoomAppAssetDataCircle.ASSET_TYPE, ZoomAppAssetViewCircle); v_assets.registerView (ZoomAppAssetDataRectangle.ASSET_TYPE, ZoomAppAssetViewRectangle); */ /* Alternative 2: * - ein Data-Objekt je Asset (Erzeugung per Konstruktor) * - ein Logik-Objekt für alle Assets * - zwei Controller-Objekte (je ASSET_TYPE eines * - ein View-Objekt je Asset (Erzeugung per Konstruktor) * Enige der notwendigen Beziehungen werden von Assets.as automatisch * erstellt. Andere werden direkt erstellt. * Hier brauchen die Logic- und die Controller-Objekte keine * Asset-Interfaces zu implementieren. v_logic.iAssetDataContainer = v_assets.data; v_controller_circle.iAssetLogic = v_logic; v_controller_rectangle.iAssetLogic = v_logic; v_assets.registerData (ZoomAppAssetDataCircle.ASSET_TYPE, ZoomAppAssetDataCircle); v_assets.registerData (ZoomAppAssetDataRectangle.ASSET_TYPE, ZoomAppAssetDataRectangle); v_assets.registerController (ZoomAppAssetDataCircle.ASSET_TYPE, v_controller_circle); v_assets.registerController (ZoomAppAssetDataRectangle.ASSET_TYPE, v_controller_rectangle); v_assets.registerView (ZoomAppAssetDataCircle.ASSET_TYPE, ZoomAppAssetViewCircle); v_assets.registerView (ZoomAppAssetDataRectangle.ASSET_TYPE, ZoomAppAssetViewRectangle); */ /* Alternative 3: * - ein Data-Objekt je Asset (Erzeugung per Konstruktor) * - ein Logik-Objekt je Asset (Erzeugung per Konstruktor) * - ein Controller-Objekt je Asset (Erzeugung per Konstruktor) * - ein View-Objekt je Asset (Erzeugung per Konstruktor) * Alle notwendigen Beziehungen werden von Assets.as automatisch erstellt. * Voraussetzung: Die LDVCS-Objekte implementieren die entsprechenden * Setter-Methoden (Interfaces!). */ v_assets.registerData (ZoomAppAssetDataCircle.ASSET_TYPE, ZoomAppAssetDataCircle); v_assets.registerData (ZoomAppAssetDataRectangle.ASSET_TYPE, ZoomAppAssetDataRectangle); v_assets.registerLogic (ZoomAppAssetDataCircle.ASSET_TYPE, ZoomAppAssetLogicCircle); v_assets.registerLogic (ZoomAppAssetDataRectangle.ASSET_TYPE, ZoomAppAssetLogicRectangle); v_assets.registerController (ZoomAppAssetDataCircle.ASSET_TYPE, ZoomAppAssetControllerCircleMulti); v_assets.registerController (ZoomAppAssetDataRectangle.ASSET_TYPE, ZoomAppAssetControllerRectangleMulti); v_assets.registerView (ZoomAppAssetDataCircle.ASSET_TYPE, ZoomAppAssetViewCircleMulti); v_assets.registerView (ZoomAppAssetDataRectangle.ASSET_TYPE, ZoomAppAssetViewRectangleMulti); v_service.init(); } ///////////////////////////////////////////////////////////////////////////// // Attributes ///////////////////////////////////////////////////////////////////////////// public function set background(p_background: Background) { v_background = p_background; } public function set stage(p_stage: Stage): void { v_stage = p_stage; } ///////////////////////////////////////////////////////////////////////////// // End of class ///////////////////////////////////////////////////////////////////////////// } } ///////////////////////////////////////////////////////////////////////////////// // End of file /////////////////////////////////////////////////////////////////////////////////