チェンジセット 317

差分発生行の前後
無視リスト:
コミット日時:
2008/04/14 12:08:21 (5 ヶ月前)
コミッタ:
fladdict
ログメッセージ:

もろもろ拡張。URLLoaderのdataformatがVariablesの場合不正データがハンドリングできないファックな仕様に、URLLoaderCommandレベルで対応

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/Commands/src/commands/Command.as

    r232 r317  
    3838                 
    3939                 
     40                 
    4041                /** 
    4142                 * コンストラクタで登録した処理を実行します。 
     
    4546                override public function execute():void 
    4647                { 
    47                         if(_params==null){ 
     48                        if(_params){ 
     49                                _function.apply(_thisObject, _params);  
     50                        }else{ 
    4851                                _function.apply(_thisObject); 
    49                         }else{ 
    50                                 _function.apply(_thisObject, _params); 
    5152                        } 
    5253                         
  • as3/Commands/src/commands/CommandContainer.as

    r304 r317  
    3232                        if(commandDict[command]){ 
    3333                                throw new Error("CommandContainer.execute() this command is alrealdy registerd"); 
    34                         }else{ 
    35                                 commandDict[command] = command; 
    36                                 _numCommands++; 
    37                                  
    38                                 //trace("CommandComtainer.added",_numCommands); 
    3934                        } 
     35                         
     36                        commandDict[command] = command; 
     37                        _numCommands++; 
    4038                         
    4139                        command.addEventListener(Event.COMPLETE, executeHandler); 
  • as3/Commands/src/commands/ext/CheckCommand.as

    r234 r317  
    2626                        _function = func;  
    2727                        _params = params; 
     28                        _duration = checkDuration; 
    2829                } 
    2930                 
  • as3/Commands/src/commands/ext/TweenerCommand.as

    r232 r317  
    1313                protected var _target : Object 
    1414                protected var _paramObj : Object 
     15                protected var _waitComplete : Boolean 
    1516                 
    1617                /** 
     
    1819                 * @param paramObj:Object parameters for tween, same as Tweener 
    1920                 */ 
    20                 public function TweenerCommand(target:Object, paramObj:Object
     21                public function TweenerCommand(target:Object, paramObj:Object, waitComplete:Boolean=true
    2122                { 
    2223                        super(); 
    2324                        _target = target; 
    2425                        _paramObj = paramObj; 
    25                         _paramObj.onComplete = _onCompleteCallback; 
     26                        _waitComplete = waitComplete; 
     27                         
     28                        if(waitComplete==true) 
     29                                _paramObj.onComplete = _onCompleteCallback; 
    2630                } 
    2731                 
     
    2933                { 
    3034                        Tweener.addTween(_target, _paramObj); 
     35                         
     36                        if(_waitComplete==false) 
     37                                _onCompleteCallback(); 
    3138                } 
    3239                 
  • as3/Commands/src/commands/ext/URLLoaderCommand.as

    r304 r317  
    88        import commands.CommandBase; 
    99        import flash.events.IOErrorEvent; 
     10        import flash.net.URLVariables; 
    1011         
    1112        /* 
     
    2627         * ignoreIOError        Boolean IOErrorがでた場合もそのまま処理をすすめるフラグ 
    2728         * ignoreCache          Boolean 乱数をGETで送信してキャッシュを無効にするフラグ。キャッシュブレイカーの挙動については検証すること!! 
     29         * ignoreInvalidVariables       dataFormatにURLLoaderDataFormat.VARIABLESを指定してかつ、取得したデータが不正なデータだった場合、エラーを起こすか、空のオブジェクトを返すか 
    2830         * 
    2931         * 
     
    5052                        loader.addEventListener(IOErrorEvent.IO_ERROR, _ioErrorHandler, false, 0, true); 
    5153                        loader.load(req); 
    52                          
     54 
    5355                        loader.data = 5; 
    5456                } 
     
    7577                        removeListeners(); 
    7678                         
     79                        var data:Object = loader.data; 
     80                         
     81                        if(paramObj.dataFormat==URLLoaderDataFormat.VARIABLES) 
     82                        { 
     83                                var val:URLVariables = new URLVariables(); 
     84                                try{ 
     85                                        val.decode(String(data)); 
     86                                        data = val; 
     87                                }catch(e:Error){ 
     88                                        if(paramObj.ignoreInvalidVariables==true) 
     89                                        { 
     90                                                data = {}; 
     91                                        }else{ 
     92                                                throw new Error("取得したVariablesをパースできません"); 
     93                                        } 
     94                                } 
     95                        } 
     96                         
    7797                        if(paramObj.dataScope && paramObj.dataProp){ 
    7898                                if(paramObj.parser){ 
    79                                         paramObj.dataScope[paramObj.dataProp] = paramObj.parser(loader.data); 
     99                                        paramObj.dataScope[paramObj.dataProp] = paramObj.parser(data); 
    80100                                }else{ 
    81                                         paramObj.dataScope[paramObj.dataProp] = formatData(loader.data); 
     101                                        paramObj.dataScope[paramObj.dataProp] = formatData(data); 
    82102                                } 
    83103                        } 
     
    120140                        } 
    121141                         
    122                         //CacheBreakerを追加 
     142                        //GETでない場合のCacheBreakerを追加 
    123143                        if( !paramObj.urlVariables){ 
    124144                                if(paramObj.ignoreCache) 
     
    138158                        }else{ 
    139159                                loader = new URLLoader(); 
     160                                 
     161                                if(paramObj.dataFormat==URLLoaderDataFormat.BINARY) 
     162                                { 
     163                                        loader.dataFormat = URLLoaderDataFormat.BINARY; 
     164                                }else{ 
     165                                        loader.dataFormat = URLLoaderDataFormat.TEXT; 
     166                                } 
     167                                 
     168                                /* 
     169                                // 
    140170                                if(paramObj.dataFormat){ 
    141171                                        loader.dataFormat = paramObj.dataFormat; 
    142172                                }else{ 
    143173                                        loader.dataFormat = URLLoaderDataFormat.TEXT; 
    144                                 } 
     174                                }*/ 
    145175                        } 
    146176                        return loader;