チェンジセット 842
- コミット日時:
- 2008/07/14 14:36:22 (4 年前)
- ファイル:
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
air/ByteCodeDisassembler/Controller.as
r841 r842 12 12 public var frame : Array = []; 13 13 public var info : Object = []; 14 public var onUpdateTree : Function; 15 public var onUpdatePanel : Function; 14 private var onLoad : Array = []; 15 private var onInfo : Array = []; 16 private var onProgress : Array = []; 17 18 private var stream : URLStream; 19 20 // -------------------- 21 //event handler 22 // -------------------- 23 /** 24 * SWFがロードされたときに呼び出されるリスナの追加。 25 * 削除はできない。 26 */ 27 public function addLoadListener(f : Function):void{ 28 this.onLoad.push(f); 29 } 16 30 17 private var stream : URLStream; 31 /** 32 * 表示する情報が更新されたときに呼び出されるリスナの追加。 33 * 削除はできない。 34 */ 35 public function addInfoListener(f : Function):void{ 36 this.onInfo.push(f); 37 } 38 39 /** 40 * ロード等の進捗状況が更新されたときに呼び出されるリスナの追加。 41 * 削除はできない。 42 */ 43 public function addProgressListener(f : Function):void{ 44 this.onProgress.push(f); 45 } 46 47 48 // リスナの呼び出し 49 private function notify(xs : Array):void{ 50 for(var i:int = 0; i < xs.length; i++){ 51 var f: Function = xs[i]; 52 f(this); 53 } 54 } 55 56 /** 57 * SWFの逆アセンブル。 58 */ 18 59 public function disassemble(path : String) : void{ 19 60 stream = new URLStream(); 20 61 stream.addEventListener(Event.COMPLETE, onComplete); 21 stream.addEventListener(IOErrorEvent.IO_ERROR, onIOError);22 62 23 63 var req:URLRequest = new URLRequest(path); … … 41 81 } 42 82 switch (tag) { 43 case 82: { 44 frame.push({label:'abc',tag:'abc',children:[ 45 1,2,3 46 ]}); 83 case 82: 84 frame.push({label:'abc',tag:'abc'}); 47 85 swf.seek(length); 48 }49 86 break; 50 87 51 default: {88 default: 52 89 frame.push({label:'???',tag:tag,length:length}); 53 90 swf.seek(length); 54 }55 91 break; 56 92 } … … 61 97 trace(e); 62 98 } 63 this.onUpdateTree(); 64 } 65 66 private function onIOError() : void{ 99 this.notify(this.onLoad); 67 100 } 68 101 69 102 public function showInfo(item : Object):void{ 70 // if(item.label == '???'){71 103 this.info = item; 72 // } 73 this.onUpdatePanel(); 104 this.notify(this.onInfo); 74 105 } 75 106 } air/ByteCodeDisassembler/Main.mxml
r835 r842 10 10 11 11 private function init() : void{ 12 var self : Object = this;13 controller.onUpdateTree =function() : void{14 self.tree.dataProvider = controller.frame;15 };12 var self : Object = this; 13 controller.addLoadListener(function() : void{ 14 self.tree.dataProvider = controller.frame; 15 }); 16 16 17 controller.onUpdatePanel =function() : void{18 trace('update'); 19 switch(controller.info.tag){ 20 case 'abc': 21 self.abc.visible = true;22 self.etc.visible = false;23 break;24 default: 25 self.abc.visible = false;26 self.etc.visible = true;27 self.etc_tag.text = controller.info.tag;28 self.etc_length.text = controller.info.length;29 }30 } 17 controller.addInfoListener(function() : void{ 18 switch(controller.info.tag){ 19 case 'abc': 20 self.abc.visible = true; 21 self.etc.visible = false; 22 break; 23 default: 24 self.abc.visible = false; 25 self.etc.visible = true; 26 self.etc_tag.text = controller.info.tag; 27 self.etc_length.text = controller.info.length; 28 break; 29 } 30 }); 31 31 } 32 32 ]]>

