チェンジセット 3100: as3/GeniusFramework
- コミット日時:
- 2009/09/15 11:58:04 (2 年前)
- ファイル:
-
- as3/GeniusFramework/branches/2.0/.actionScriptProperties (更新) (1 diff)
- as3/GeniusFramework/branches/2.0/.flexLibProperties (更新) (2 diffs)
- as3/GeniusFramework/branches/2.0/app-template/libs/Genius2.swc (削除)
- as3/GeniusFramework/branches/2.0/app-template/src/MyAppDelegate.as (更新) (2 diffs)
- as3/GeniusFramework/branches/2.0/src/jp/seagirl/containers/GeniusViewStack.as (更新) (2 diffs)
- as3/GeniusFramework/branches/2.0/src/jp/seagirl/controls/NotifierBase.as (更新) (1 diff)
- as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/controllers/ViewController.as (更新) (6 diffs)
- as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/core/Config.as (更新) (3 diffs)
- as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/core/Context.as (更新) (3 diffs)
- as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/events/GeniusEvent.as (移動) (as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/events/ApplicationEvent.as から 移動) (1 diff)
- as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/threads/GeniusThread.as (更新) (2 diffs)
- as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/views/AbstractDelegate.as (更新) (3 diffs)
- as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/views/ApplicationDelegate.as (更新) (5 diffs)
- as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/views/ItemRendererDelegate.as (更新) (2 diffs)
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
as3/GeniusFramework/branches/2.0/.actionScriptProperties
r2773 r3100 1 <?xml version="1.0" encoding="UTF-8" ?>1 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 2 <actionScriptProperties mainApplicationPath="Genius2.as" projectUUID="b96a7f6a-4ff8-4cae-b833-2386b84f0cb6" version="6"> 3 3 <compiler additionalCompilerArguments="" autoRSLOrdering="true" copyDependentFiles="false" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="false" htmlPlayerVersionCheck="true" includeNetmonSwc="false" outputFolderPath="app-template/libs" sourceFolderPath="src" strict="true" targetPlayerVersion="0.0.0" useApolloConfig="true" useDebugRSLSwfs="true" verifyDigests="true" warn="true"> as3/GeniusFramework/branches/2.0/.flexLibProperties
r2774 r3100 1 <?xml version="1.0" encoding="UTF-8" ?>1 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 2 <flexLibProperties version="1"> 3 3 <includeClasses> … … 10 10 <classEntry path="jp.seagirl.genius.controllers.ViewController"/> 11 11 <classEntry path="jp.seagirl.collections.LabelFunction"/> 12 <classEntry path="jp.seagirl.genius.events. ApplicationEvent"/>12 <classEntry path="jp.seagirl.genius.events.GeniusEvent"/> 13 13 <classEntry path="jp.seagirl.containers.GeniusViewStack"/> 14 14 <classEntry path="jp.seagirl.genius.core.Config"/> as3/GeniusFramework/branches/2.0/app-template/src/MyAppDelegate.as
r2591 r3100 9 9 { 10 10 public var view:[% name %]; 11 12 /**13 * アプリケーションの設定14 */15 override protected function createConfig():Config16 {17 return new Config("assets/config.json");18 19 //return new Config("assets/config.yaml");20 21 /* return new Config({22 applicationName: 'GettingStarted',23 applicationVersion: '1.0.0'24 }); */25 }26 11 27 12 /** … … 53 38 * 状態に変化があると呼び出されます。。 54 39 */ 55 override p rotectedfunction changePage(data:Object):void40 override public function changePage(data:Object):void 56 41 { 57 42 view.viewStack.selectViewByClassName(data.page); as3/GeniusFramework/branches/2.0/src/jp/seagirl/containers/GeniusViewStack.as
r2596 r3100 3 3 import flash.display.InteractiveObject; 4 4 import flash.events.ContextMenuEvent; 5 import flash.events.Event; 5 6 import flash.ui.ContextMenu; 6 7 import flash.ui.ContextMenuItem; 7 8 9 import jp.seagirl.genius.events.GeniusEvent; 8 10 import jp.seagirl.genius.threads.ChangeStateThread; 9 11 … … 36 38 var newIndex:int = getChildIndex(view); 37 39 38 selectedIndex = newIndex; 40 if (oldIndex == newIndex) 41 { 42 view.dispatchEvent(new GeniusEvent(GeniusEvent.UPDATE_PAGE)); 43 } 44 else 45 { 46 selectedIndex = newIndex; 47 } 39 48 } 40 49 else as3/GeniusFramework/branches/2.0/src/jp/seagirl/controls/NotifierBase.as
r925 r3100 12 12 public var text:String; 13 13 14 public function create(target:UIComponent = null):void14 public function init(target:UIComponent = null):void 15 15 { 16 16 if (target == null) as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/controllers/ViewController.as
r2773 r3100 32 32 33 33 import jp.seagirl.controls.Notifier; 34 import jp.seagirl.genius.core.Config; 34 35 import jp.seagirl.genius.core.Context; 35 36 import jp.seagirl.genius.effects.IGeniusEffect; 37 import jp.seagirl.genius.events.GeniusEvent; 36 38 import jp.seagirl.genius.models.IModel; 37 39 import jp.seagirl.genius.views.ApplicationDelegate; … … 48 50 import mx.events.FlexEvent; 49 51 import mx.validators.Validator; 50 52 51 53 public class ViewController 52 54 { … … 165 167 //-------------------------------------------------------------------------- 166 168 169 protected function getConfig():Config 170 { 171 return context.config; 172 } 173 167 174 protected function getModel(modelName:String):IModel 168 175 { 169 176 return context.getModel(modelName); 177 } 178 179 protected function getController(controllerName:String):ViewController 180 { 181 return context.getController(controllerName); 170 182 } 171 183 … … 205 217 this['view'].addEventListener(FlexEvent.INITIALIZE, view_initializeHandler); 206 218 this['view'].addEventListener(FlexEvent.CREATION_COMPLETE, view_creationCompleteHandler); 219 220 if (this['view'].processedDescriptors) 221 view_initializeHandler(new FlexEvent(FlexEvent.INITIALIZE)); 222 223 if (this['view'].initialized) 224 view_creationCompleteHandler(new FlexEvent(FlexEvent.CREATION_COMPLETE)); 207 225 } 208 226 … … 326 344 initialize(); 327 345 346 this['view'].addEventListener(GeniusEvent.UPDATE_PAGE, view_updatePageHandler); 328 347 this['view'].addEventListener(FlexEvent.SHOW, view_showHandler); 329 348 this['view'].addEventListener(FlexEvent.HIDE, view_hideHandler); 330 349 331 notifier. create();350 notifier.init(); 332 351 333 352 if (context.state.page == this['view'].className) … … 352 371 * @private 353 372 */ 373 protected function view_updatePageHandler(event:GeniusEvent):void 374 { 375 if (!active) 376 return; 377 378 update(); 379 } 380 381 /** 382 * @private 383 */ 354 384 protected function view_showHandler(event:FlexEvent):void 355 385 { as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/core/Config.as
r2774 r3100 1 package jp.seagirl.genius.core 2 { 3 import com.adobe.serialization.json.JSON; 4 5 import flash.events.ErrorEvent; 6 import flash.events.Event; 7 import flash.events.EventDispatcher; 8 import flash.events.IOErrorEvent; 9 import flash.events.SecurityErrorEvent; 10 import flash.net.URLLoader; 11 import flash.net.URLRequest; 12 import flash.system.Security; 13 14 import jp.seagirl.genius.events.ApplicationEvent; 15 16 import mx.core.Application; 17 18 import org.as3yaml.YAML; 19 20 [Event(name="applicationDidFinishedInitializingConfig", type="jp.seagirl.genius.events.ApplicationEvent")] 21 22 dynamic public class Config extends EventDispatcher 1 /** 2 * Licensed under the MIT License 3 * 4 * Copyright (c) 2009 seagirl 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a copy 7 * of this software and associated documentation files (the "Software"), to deal 8 * in the Software without restriction, including without limitation the rights 9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 * copies of the Software, and to permit persons to whom the Software is 11 * furnished to do so, subject to the following conditions: 12 * 13 * The above copyright notice and this permission notice shall be included in 14 * all copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 * THE SOFTWARE. 23 * 24 */ 25 26 package jp.seagirl.genius.core 27 { 28 public class Config 23 29 { 24 public function Config( source:Object = null)30 public function Config() 25 31 { 26 this.source = source; 27 initialize(); 32 28 33 } 29 30 private var source:Object;31 34 32 35 private var _applicationName:String = 'Genius Application'; … … 113 116 114 117 private var _serviceURL:String; 115 private var _application:Application = Application.application as Application;116 118 117 119 public function set serviceURL(val:String):void … … 122 124 public function get serviceURL():String 123 125 { 124 return Security.sandboxType.indexOf('local') != -1 125 ? _localBaseURL + _serviceURL 126 : _application.url.replace(/\/[0-9a-zA-Z_-]+\.swf$/, _serviceURL); 126 return _serviceURL; 127 127 } 128 129 public function initialize():void130 {131 if (source != null && source is String)132 {133 load();134 return;135 }136 137 process(source);138 }139 140 private function load():void141 {142 var loader:URLLoader = new URLLoader();143 loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);144 loader.addEventListener(IOErrorEvent.IO_ERROR, loaderErrorHandler);145 loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, loaderErrorHandler);146 loader.load(new URLRequest(source as String));147 }148 149 private function process(data:Object = null):void150 {151 for (var key:Object in data)152 {153 this[key] = data[key];154 }155 156 dispatchEvent(new ApplicationEvent(ApplicationEvent.APPLICATION_DID_FINISHED_INITIALIZING_CONFIG));157 }158 159 private function loaderErrorHandler(event:ErrorEvent):void160 {161 process();162 }163 164 private function loaderCompleteHandler(event:Event):void165 {166 var flagments:Array = source.split('.');167 var extension:String = flagments[flagments.length - 1] as String;168 var data:Object;169 170 switch (extension)171 {172 case "yaml":173 {174 data = YAML.decode(event.target.data);175 break;176 }177 case "json":178 {179 data = JSON.decode(event.target.data);180 break;181 }182 }183 184 process(data);185 }186 128 } 187 129 } as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/core/Context.as
r2773 r3100 31 31 import jp.seagirl.genius.controllers.ViewController; 32 32 import jp.seagirl.genius.models.IModel; 33 import jp.seagirl.genius.models.Model;34 33 35 34 import mx.events.BrowserChangeEvent; … … 83 82 84 83 //---------------------------------- 84 // defaultState 85 //---------------------------------- 86 87 /** 88 * デフォルトの状態です。 89 */ 90 public function get defaultState():Object 91 { 92 return config.defaultState; 93 } 94 95 //---------------------------------- 96 // ignoredState 97 //---------------------------------- 98 99 /** 100 * ブラウザに同期させない状態のキーを定義した配列です。 101 */ 102 public var ignoredState:Array = []; 103 104 //---------------------------------- 85 105 // state 86 106 //---------------------------------- … … 109 129 if (browserManager != null) 110 130 { 111 var string:String = URLUtil.objectToString(_state, '&'); 131 var aState:Object = {}; 132 133 for (var aKey:String in _state) 134 { 135 var ignore:Boolean = false; 136 137 for each (var ignoredKey:String in ignoredState) 138 { 139 if (aKey == ignoredKey) 140 ignore = true; 141 } 142 143 if (!ignore) 144 aState[aKey] = _state[aKey]; 145 } 146 147 var string:String = URLUtil.objectToString(aState, '&'); 112 148 browserManager.setFragment(string); 113 149 } as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/events/GeniusEvent.as
r2579 r3100 3 3 import flash.events.Event; 4 4 5 public class ApplicationEvent extends Event5 public class GeniusEvent extends Event 6 6 { 7 public static const APPLICATION_DID_FINISHED_INITIALIZING_CONFIG:String = 'applicationDidFinishedInitializingConfig'; 7 public static const ASSETES_LOADED:String = 'assetsLoaded'; 8 public static const UPDATE_PAGE:String = 'updatePage'; 8 9 9 public function ApplicationEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false)10 public function GeniusEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false) 10 11 { 11 12 super(type, bubbles, cancelable); as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/threads/GeniusThread.as
r2554 r3100 26 26 package jp.seagirl.genius.threads 27 27 { 28 import jp.seagirl.genius.controllers.ViewController; 29 import jp.seagirl.genius.core.Config; 30 import jp.seagirl.genius.core.Context; 31 import jp.seagirl.genius.models.IModel; 28 32 import jp.seagirl.genius.views.ApplicationDelegate; 29 import jp.seagirl.genius.core.Context;30 33 31 34 import org.libspark.thread.Thread; … … 73 76 } 74 77 78 protected function getConfig():Config 79 { 80 return context.config; 81 } 82 83 protected function getModel(modelName:String):IModel 84 { 85 return context.getModel(modelName); 86 } 87 88 protected function getController(controllerName:String):ViewController 89 { 90 return context.getController(controllerName); 91 } 92 75 93 /** 76 94 * 汎用的なデータを追加するためのメソッドです. as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/views/AbstractDelegate.as
r2554 r3100 26 26 package jp.seagirl.genius.views 27 27 { 28 import flash.events.EventDispatcher; 28 29 import flash.utils.getDefinitionByName; 29 30 import flash.utils.getQualifiedClassName; … … 34 35 import mx.events.FlexEvent; 35 36 36 public class AbstractDelegate implements IMXMLObject37 public class AbstractDelegate extends EventDispatcher implements IMXMLObject 37 38 { 38 39 public function AbstractDelegate() … … 70 71 if (!hasOwnProperty('view')) 71 72 throw new Error("対応する View が見つかりません。"); 73 74 context = ApplicationDelegate.sharedApplicationDelegate().context; 72 75 73 76 this['view'] = document; as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/views/ApplicationDelegate.as
r2774 r3100 36 36 import jp.seagirl.genius.core.Config; 37 37 import jp.seagirl.genius.core.Context; 38 import jp.seagirl.genius.events.GeniusEvent; 38 39 import jp.seagirl.genius.models.IModel; 39 40 … … 71 72 override public function initialized(document:Object, id:String):void 72 73 { 73 Thread.initialize(new EnterFrameThreadExecutor()); 74 75 context = new Context(createConfig()); 76 context.traceApplicationInformation(); 77 78 BindingUtils.bindSetter(onContextStateChange, context, 'state'); 74 if (!Thread.isReady) 75 Thread.initialize(new EnterFrameThreadExecutor()); 79 76 80 77 if (!hasOwnProperty('view')) … … 101 98 override protected function initialize():void 102 99 { 103 initializeModels(); 104 initializeViews(); 105 initializeControllers(); 106 initializeContextMenu(); 107 } 108 109 protected function initializeModels():void 110 { 111 112 } 113 114 protected function initializeViews():void 115 { 116 117 } 118 119 protected function initializeControllers():void 120 { 121 122 } 123 124 protected function initializeContextMenu():void 100 101 } 102 103 protected function loadAssets():void 104 { 105 dispatchEvent(new GeniusEvent(GeniusEvent.ASSETES_LOADED)); 106 } 107 108 protected function createContextMenu():void 125 109 { 126 110 var target:Application = this['view'] as Application; … … 189 173 } 190 174 175 private function assetsLoadedHandler(event:GeniusEvent):void 176 { 177 initialize(); 178 } 179 191 180 override protected function view_preinitializeHandler(event:FlexEvent):void 192 181 { 193 182 this['view'].removeEventListener(FlexEvent.PREINITIALIZE, view_preinitializeHandler); 183 184 preinitialize(); 185 } 186 187 override protected function view_initializeHandler(event:FlexEvent):void 188 { 189 this['view'].removeEventListener(FlexEvent.INITIALIZE, view_initializeHandler); 194 190 195 191 var application:Application = this['view'] as Application; … … 197 193 if (application) 198 194 { 195 context = new Context(createConfig()); 196 context.traceApplicationInformation(); 197 198 BindingUtils.bindSetter(onContextStateChange, context, 'state'); 199 199 200 SWFWheel.initialize(application.systemManager.stage); 200 201 SWFProfiler.init(application.systemManager.stage, application); 201 202 } 202 203 203 preinitialize(); 204 } 205 206 override protected function view_initializeHandler(event:FlexEvent):void 207 { 208 this['view'].removeEventListener(FlexEvent.INITIALIZE, view_initializeHandler); 209 210 initialize(); 204 addEventListener(GeniusEvent.ASSETES_LOADED, assetsLoadedHandler); 205 loadAssets(); 211 206 } 212 207 as3/GeniusFramework/branches/2.0/src/jp/seagirl/genius/views/ItemRendererDelegate.as
r2554 r3100 26 26 package jp.seagirl.genius.views 27 27 { 28 import jp.seagirl.genius.controllers.ViewController; 29 import jp.seagirl.genius.core.Config; 30 import jp.seagirl.genius.models.IModel; 31 28 32 import mx.events.FlexEvent; 29 33 30 34 public class ItemRendererDelegate extends AbstractDelegate 31 35 { 36 protected function getConfig():Config 37 { 38 return context.config; 39 } 40 41 protected function getModel(modelName:String):IModel 42 { 43 return context.getModel(modelName); 44 } 45 46 protected function getController(controllerName:String):ViewController 47 { 48 return context.getController(controllerName); 49 } 50 32 51 override protected function view_initializeHandler(event:FlexEvent):void 33 52 { … … 39 58 protected function view_dataChangeHandler(event:FlexEvent):void 40 59 { 41 update(); 60 if (this['view'].data) 61 update(); 42 62 } 43 63

