チェンジセット 347
- コミット日時:
- 2008/04/27 17:40:13 (4 年前)
- ファイル:
-
- as2/Commands/sample (追加)
- as2/Commands/sample/classes (追加)
- as2/Commands/sample/classes/Sample.as (追加)
- as2/Commands/sample/sample.fla (追加)
- as2/Commands/sample/sample.swf (追加)
- as2/Commands/sample/sample.xml (追加)
- as2/Commands/src/com (追加)
- as2/Commands/src/com/mosesSupposes (追加)
- as2/Commands/src/com/mosesSupposes/fuse (追加)
- as2/Commands/src/com/mosesSupposes/fuse/CustomEasing.as (追加)
- as2/Commands/src/com/mosesSupposes/fuse/Fuse-Kit-License.html (追加)
- as2/Commands/src/com/mosesSupposes/fuse/Fuse.as (追加)
- as2/Commands/src/com/mosesSupposes/fuse/FuseFMP.as (追加)
- as2/Commands/src/com/mosesSupposes/fuse/FuseItem.as (追加)
- as2/Commands/src/com/mosesSupposes/fuse/FuseKitCommon.as (追加)
- as2/Commands/src/com/mosesSupposes/fuse/PennerEasing.as (追加)
- as2/Commands/src/com/mosesSupposes/fuse/Shortcuts.as (追加)
- as2/Commands/src/com/mosesSupposes/fuse/ZManager.as (追加)
- as2/Commands/src/com/mosesSupposes/fuse/ZigoEngine.as (追加)
- as2/Commands/src/jp/cellfusion/commands/ASyncCommand.as (移動) (as2/Commands/src/jp/cellfusion/commands/SendAndLoadCommand.as から 移動) (3 diffs)
- as2/Commands/src/jp/cellfusion/commands/Command.as (更新) (1 diff)
- as2/Commands/src/jp/cellfusion/commands/EnterFrameCommand.as (更新) (1 diff)
- as2/Commands/src/jp/cellfusion/commands/FuseCommand.as (追加)
- as2/Commands/src/jp/cellfusion/commands/ICommand.as (更新) (2 diffs)
- as2/Commands/src/jp/cellfusion/commands/LoaderCommand.as (更新) (2 diffs)
- as2/Commands/src/jp/cellfusion/commands/MacroCommand.as (更新) (7 diffs)
- as2/Commands/src/jp/cellfusion/commands/SerialCommand.as (移動) (as2/Commands/src/jp/cellfusion/commands/SequenceCommand.as から 移動) (11 diffs)
- as2/Commands/src/jp/cellfusion/commands/TimerCommand.as (更新) (1 diff)
- as2/Commands/src/jp/cellfusion/commands/TraceCommand.as (追加)
- as2/Commands/src/jp/cellfusion/commands/TweenCommand.as (更新) (2 diffs)
- as2/Commands/src/jp/cellfusion/commands/XMLLoadCommand.as (追加)
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
as2/Commands/src/jp/cellfusion/commands/ASyncCommand.as
r323 r347 23 23 * @author Makoto 24 24 */ 25 class jp.cellfusion.commands. SendAndLoadCommand extends Command implements ICommand25 class jp.cellfusion.commands.ASyncCommand extends Command implements ICommand 26 26 { 27 private var _url:String, _send:LoadVars, _load:LoadVars; 28 private var _thisObj:Object, _funcRef:Function, _args:Array; 27 private var _url:String; 28 private var _sendLV:LoadVars; 29 private var _receiveLV:LoadVars; 30 private var _method:String; 31 private var _params:Object; 32 33 public function result():LoadVars { return _receiveLV; } 29 34 30 35 /** 31 36 * 32 37 */ 33 function SendAndLoadCommand(url:String, send:LoadVars, load:LoadVars, thisObj:Object, funcRef:Function, args:Array)38 function ASyncCommand(url:String, params:Object, method:String) 34 39 { 35 super();36 40 _url = url; 37 _ send = send;38 _ load = load;41 _params = params; 42 _method = method == null ? "POST" : method; 39 43 40 if (thisObj != undefined) { 41 _thisObj = thisObj; 42 _funcRef = funcRef; 43 _args = args; 44 } 44 _sendLV = new LoadVars(); 45 _receiveLV = new LoadVars(); 45 46 46 _ load.onLoad = Delegate.create(this, _loadHandler);47 _receiveLV.onLoad = Delegate.create(this, _loadHandler); 47 48 } 48 49 49 50 public function execute():Void 50 51 { 51 _send.sendAndLoad(_url, _load); 52 // パラメーター設定 53 for (var idx:String in _params) { 54 _sendLV[idx] = _params[idx]; 55 } 56 57 _sendLV.sendAndLoad(_url, _receiveLV, _method); 52 58 53 59 dispatchEvent(new CommandEvent(CommandEvent.COMMAND_START, this)); … … 68 74 } 69 75 70 public function clone(): Command76 public function clone():ICommand 71 77 { 72 return new SendAndLoadCommand(_url, _send, _load, _thisObj, _funcRef, _args);78 return new ASyncCommand(_url, _params, _method); 73 79 } 74 80 75 81 public function toString():String 76 82 { 77 return "[object SendAndLoadCommand]";83 return "[object ASyncCommand]"; 78 84 } 79 85 … … 81 87 { 82 88 if (success) { 83 var args:Array = new Array(_load).concat(_args);84 var rslt = _funcRef.apply(_thisObj, args);85 86 89 dispatchEvent(new CommandEvent(CommandEvent.COMMAND_COMPLETE, this)); 87 90 } as2/Commands/src/jp/cellfusion/commands/Command.as
r323 r347 68 68 dispatchEvent(new CommandEvent(CommandEvent.COMMAND_COMPLETE, this)); 69 69 } 70 public function clone(): Command70 public function clone():ICommand 71 71 { 72 72 return new Command(_thisObj, _funcRef, _args); as2/Commands/src/jp/cellfusion/commands/EnterFrameCommand.as
r323 r347 93 93 * クローン 94 94 */ 95 public function clone(): Command95 public function clone():ICommand 96 96 { 97 97 return new EnterFrameCommand(_thisObj, _funcRef, _args, _delay, _repeatCount); as2/Commands/src/jp/cellfusion/commands/ICommand.as
r323 r347 13 13 * 14 14 */ 15 public function clone(): Command;15 public function clone():ICommand; 16 16 17 17 /** … … 24 24 */ 25 25 public function resume():Void; 26 27 function addEventListener(event:String, handler:Object):Void; 28 29 function removeEventListener(event:String, handler:Object):Void; 26 30 } as2/Commands/src/jp/cellfusion/commands/LoaderCommand.as
r323 r347 34 34 /** 35 35 * 読み込み処理を行うコマンド 36 * <pre> 37 * var cmd:LoaderCommand = new LoaderCommand("example.swf", main); 38 * cmd.execute(); 39 * 40 * // プログレスバーを表示する場合には addEventListener を使って COMMAND_PROGRESS イベントを監視します 41 * var cmd:LoaderCommand = new LoaderCommand("example.swf", main); 42 * 43 * // AS2 では任意の関数に委譲するには Delegate.create を使って指定します 44 * _progressDelegate = Delegate.create(this, progressHandler); 45 * 46 * // 先ほど作成した _progressDelegate を追加 47 * cmd.addEventListener(CommandEvent.COMMAND_PROGRESS, _progressDelegate); 48 * 49 * cmd.execute(); 50 * 51 * // progressHandler 52 * function progressHandler(e:CommandEvent):Void { 53 * var cmd:LoaderCommand = LoaderCommand(e.target); 54 * 55 * var percent:Number = cmd.loaded / cmd.total; 56 * trace("load progress:"+(percent*100)+"%"); 57 * } 58 * </pre> 36 59 * @param url 読み込むURL 37 60 * @param path 読み込み先 … … 82 105 * クローン 83 106 */ 84 public function clone(): Command107 public function clone():ICommand 85 108 { 86 109 return new LoaderCommand(_url, _path); as2/Commands/src/jp/cellfusion/commands/MacroCommand.as
r323 r347 31 31 * <pre> 32 32 * // MacroCommand を作成後、add で Command を追加する 33 * var mq:MacroCommand = new SequenceCommand();34 * mq.add(new Command(null, trace, ["1秒後"]));33 * var mq:MacroCommand = new MacroCommand(); 34 * mq.add(new TraceCommand("1秒後")); 35 35 * mq.add(new TimerCommand(null, trace, ["1秒後に実行"], 1000, 1)); 36 36 * … … 39 39 * 40 40 * // MacroCommand を作成時に Command を追加する 41 * var mq:MacroCommand = new SequenceCommand(42 * new Command(null, trace, ["1秒後"]),41 * var mq:MacroCommand = new MacroCommand( 42 * new TraceCommand("1秒後"), 43 43 * new TimerCommand(null, trace, ["1秒後に実行"], 1000, 1) 44 44 * ); … … 47 47 * mq.execute(); 48 48 * </pre> 49 * @param commands 登録するコマンドの 配列49 * @param commands 登録するコマンドの羅列 50 50 */ 51 51 public function MacroCommand() … … 79 79 public function add(cmd:Command):Void 80 80 { 81 if (cmd == null) return; 81 if (cmd == null) { 82 throw new Error("Command がありません"); 83 return; 84 } 85 82 86 var idx:Number = getItemIndex(_commands, cmd); 83 87 if (idx == -1) { … … 97 101 public function remove(cmd:Command):Void 98 102 { 99 if (cmd == null) return; 103 if (cmd == null) { 104 throw new Error("Command がありません"); 105 return; 106 } 107 100 108 var idx:Number = getItemIndex(_commands, cmd); 101 109 if (idx != -1) { … … 143 151 * 144 152 */ 145 public function clone(): Command153 public function clone():ICommand 146 154 { 147 155 return new MacroCommand(_commands); … … 160 168 private function _commandCompleteHandler(e:CommandEvent) 161 169 { 170 // 終了した Command の数と登録されている Command の数が一致したらイベントを発行する 162 171 if (++_endCommand == _commands.length) { 163 172 dispatchEvent(new CommandEvent(CommandEvent.COMMAND_COMPLETE, this)); as2/Commands/src/jp/cellfusion/commands/SerialCommand.as
r323 r347 22 22 * @author Makoto 23 23 */ 24 class jp.cellfusion.commands.Se quenceCommand extends Command implements ICommand24 class jp.cellfusion.commands.SerialCommand extends Command implements ICommand 25 25 { 26 26 private var _commands:Array; … … 30 30 31 31 /** 32 * 登録した コマンドを順番よく実行します。32 * 登録した複数のコマンドを一つずつ順番に実行します。 33 33 * <pre> 34 * // Se quenceCommand を作成後、add で Command を追加する35 * var sq:Se quenceCommand = new SequenceCommand();34 * // SerialCommand を作成後、add で Command を追加する 35 * var sq:SerialCommand = new SerialCommand(); 36 36 * sq.add(new Command(null, trace, ["hoge"])); 37 37 * sq.add(new TimerCommand(null, trace, ["1秒後に実行"], 1000, 1)); … … 41 41 * sq.execute(); 42 42 * 43 * // コンストラクタ時に Command を追加する44 * var sq:Se quenceCommand = new SequenceCommand(45 * new Command(null, trace, ["hoge"]),43 * // 作成時に Command を追加する 44 * var sq:SerialCommand = new SerialCommand( 45 * new TraceCommand("hoge"), 46 46 * new TimerCommand(null, trace, ["1秒後に実行"], 1000, 1), 47 * new Command(null, trace, ["1秒後"])47 * [new TraceCommand("同時に"), new TraceCommand("実行(といっても微妙に誤差は生じる)")] 48 48 * ); 49 49 * … … 51 51 * sq.execute(); 52 52 * </pre> 53 * @param commands Command を入れた配列。順番通りに登録されます。54 */ 55 public function Se quenceCommand()53 * @param ... Command クラス 54 */ 55 public function SerialCommand() 56 56 { 57 57 _commandProgressDelegate = Delegate.create(this, _commandProgressHandler); … … 65 65 break; 66 66 case 1: 67 // 一つの場合でも配列ではない場合があるのでインスタンスを確認する68 67 if (arguments[0] instanceof Array) { 69 68 var arr:Array = arguments[0]; … … 82 81 * @param cmd 追加するコマンド 83 82 */ 84 public function add(cmd: Command):Void83 public function add(cmd:Object):Void 85 84 { 86 85 var idx:Number = getItemIndex(_commands, cmd); 87 if (idx == -1) { 88 _commands.push(cmd); 89 // cmd.addEventListener(CommandEvent.COMMAND_PROGRESS, _commandProgressDelegate); 90 // cmd.addEventListener(CommandEvent.COMMAND_COMPLETE, _commandCompleteDelegate); 91 } 92 else { 93 throw new Error("同じ command が見つかりました。"); 94 } 86 if (idx == -1) _commands.push(cmd); 87 else throw new Error("同じ command が見つかりました。"); 95 88 } 96 89 … … 102 95 { 103 96 var idx:Number = getItemIndex(_commands, cmd); 104 if (idx != -1) { 105 _commands.splice(idx, 1); 106 // cmd.removeEventListener(CommandEvent.COMMAND_PROGRESS, _commandProgressDelegate); 107 // cmd.removeEventListener(CommandEvent.COMMAND_COMPLETE, _commandCompleteDelegate); 108 } 109 else { 110 throw new Error("commandが見つかりませんでした。"); 111 } 97 if (idx != -1) _commands.splice(idx, 1); 98 else throw new Error("commandが見つかりませんでした。"); 112 99 } 113 100 … … 123 110 124 111 _executeNext(); 125 } 126 else { 112 } else { 127 113 throw new Error("commandが登録されていません。"); 128 114 } … … 151 137 * 152 138 */ 153 public function clone():Command 154 { 155 return new SequenceCommand(_commands); 139 public function clone():ICommand 140 { 141 var temp:SerialCommand = new SerialCommand(); 142 143 var i:Number = 0; 144 var cmd:ICommand; 145 while (cmd = _commands[i++]) { 146 temp.add(cmd.clone()); 147 } 148 149 return new temp 156 150 } 157 151 158 152 public function toString():String 159 153 { 160 return "[object Se quenceCommand]";154 return "[object SerialCommand]"; 161 155 } 162 156 … … 174 168 } 175 169 176 private function _executeNext() 177 { 178 var command = _commands[_currentIndex++]; 170 /** 171 * 次のコマンドを実行する 172 */ 173 private function _executeNext():Void 174 { 175 var command:ICommand = _commands[_currentIndex++]; 179 176 if (command) { 180 177 command.addEventListener(CommandEvent.COMMAND_PROGRESS, _commandProgressDelegate); … … 185 182 } 186 183 } 187 188 private function _commandProgressHandler(e:CommandEvent) 189 { 190 // dispatchEvent({type:COMMAND_PROGRESS, current:_currentIndex, length:_commands.length}); 191 192 // eventObj.current = _currentIndex; 193 // eventObj.length = _commands.length; 194 // dispatchEvent(eventObj); 184 185 /** 186 * コマンドを実行したときに呼び出される 187 */ 188 private function _commandProgressHandler(e:CommandEvent):Void 189 { 195 190 dispatchEvent(new CommandEvent(CommandEvent.COMMAND_PROGRESS, this)); 196 191 } 197 198 private function _commandCompleteHandler(e:CommandEvent) 199 { 200 var command:Command = e.target; 192 193 /** 194 * コマンドを実行し終わると呼び出される 195 */ 196 private function _commandCompleteHandler(e:CommandEvent):Void 197 { 198 var command:ICommand = e.target; 201 199 command.removeEventListener(CommandEvent.COMMAND_PROGRESS, _commandProgressDelegate); 202 200 command.removeEventListener(CommandEvent.COMMAND_COMPLETE, _commandCompleteDelegate); as2/Commands/src/jp/cellfusion/commands/TimerCommand.as
r323 r347 170 170 * 171 171 */ 172 public function clone(): Command172 public function clone():ICommand 173 173 { 174 174 return new TimerCommand(_thisObj, _funcRef, _args, _delay, _repeatCount); as2/Commands/src/jp/cellfusion/commands/TweenCommand.as
r323 r347 13 13 private var target:Object, prop:Array, func:Function, begin:Array, finish:Array, duration:Number, useSeconds:Boolean; 14 14 private var _tweens:Array; 15 16 // 参照渡しの場合はどうするべきか? 15 16 /** 17 * 標準搭載の Tween クラスを使って動きをつけます 18 */ 17 19 public function TweenCommand(target:Object, prop:Array, func:Function, begin:Array, finish:Array, duration:Number, useSeconds:Boolean) 18 20 { … … 61 63 } 62 64 63 public function clone(): Command65 public function clone():ICommand 64 66 { 65 67 return new TweenCommand(target, prop, func, begin, finish, duration, useSeconds);

