flash on 2012-9-8 @author Saqoosha Saqoosha forked:0 favorite:2 lines:101 license : MIT License modified : 2012-09-08 17:30:40 package { import flash.display.Sprite; import flash.net.NetConnection; import flash.net.ObjectEncoding; import flash.text.TextField; import flash.text.TextFormat; /** * @author Saqoosha */ public class UstreamStatus extends Sprite { private var _connection:NetConnection; private var _text:TextField; public function UstreamStatus() { stage.scaleMode = "noScale"; stage.align = "TL"; _connection = new NetConnection(); _connection.objectEncoding = ObjectEncoding.AMF0; _connection.client = this; // _connection.addEventListener(NetStatusEvent.NET_STATUS, _onControlStatus); _connection.connect('rtmp://74.217.100.132/ustream', {media: '3166181', application: 'channel'}); _text = new TextField(); _text.defaultTextFormat = new TextFormat('_typewriter', 14, 0x0); _text.width = 1000; _text.height = 1000; addChild(_text); } public function moduleInfo(info:Object):void { trace('CONTROL MODULE INFO ---'); if (info.hasOwnProperty('stream')) { if (info.stream === 'offline') { _text.text = 'OFFLINE'; } else { _text.text = ObjectDumper.dumpToText(info); } } } } } import flash.geom.Matrix3D; import flash.display.BitmapData; import flash.utils.ByteArray; import flash.utils.getQualifiedClassName; class ObjectDumper extends Object { /** * 変数の内容をダンプして文字列として返す * * @param foo ダンプ対象の変数 * @param maxObjectNests Object型の情報を何階層まで出力するか * @param level 現在の階層、再帰呼び出しでのみ使用するので設定不要 * @param label 出力に付くラベル、再帰呼び出しでのみ使用するので設定不要 */ public static function dumpToText(data:*, maxObjectNests:Number = 5, level:int = 0, label:String = ''):String { var out:String = ''; var pad:String = ''; var i:int = 0; for (i = 0; i < level; i++) pad += ' '; switch (true) { case data is Boolean: case data is Number: case data is int: case data is uint: case data is String: case data === undefined: case data === null: out += pad + label + '(' + typeof data + ') ' + data + '\n'; break; default: var type:String = getQualifiedClassName(data); var vecType:String = ''; var match:Array = type.match(/__AS3__\.vec::Vector\.<(.*)>/); if (match) { type = 'Vector'; vecType = '.<' + match[1].replace(/::/g, '.') + '>'; } switch (type) { case 'Array': case 'Vector': out += pad + label + '(' + typeof data + ') [' + type + vecType + ' size = ' + data.length + ']\n'; var n:int = Math.min(data.length, 100); for (i = 0; i < n; i++) { out += arguments.callee(data[i], maxObjectNests, level + 1, '[' + i + '] = '); } if (n < data.length) { out += pad + ' ... abbreviated ...\n'; } break; case 'flash.utils::ByteArray': out += pad + label + '(object) [ByteArray length = ' + ByteArray(data).length + ']\n'; break; case 'flash.display::BitmapData': out += pad + label + '(object) [BitmapData width = ' + BitmapData(data).width + ' height = ' + BitmapData(data).height + ']\n'; break; // case 'flash.geom::Matrix3D': // var r:Vector.<Number> = Matrix3D(data).rawData; // out += pad + r[0].toPrecision(3) + ', ' + r[1].toPrecision(3) + ', ' + r[2].toPrecision(3) + ', ' + r[3].toPrecision(3) + ',\n'; // out += pad + r[4].toPrecision(3) + ', ' + r[5].toPrecision(3) + ', ' + r[6].toPrecision(3) + ', ' + r[7].toPrecision(3) + ',\n'; // out += pad + r[8].toPrecision(3) + ', ' + r[9].toPrecision(3) + ', ' + r[10].toPrecision(3) + ', ' + r[11].toPrecision(3) + ',\n'; // out += pad + r[12].toPrecision(3) + ', ' + r[13].toPrecision(3) + ', ' + r[14].toPrecision(3) + ', ' + r[15].toPrecision(3) + '\n'; // break; default: out += pad + label + '(' + typeof data + ') ' + data + '\n'; if (level < maxObjectNests) { var keys:Array = []; for (var key:* in data) keys.push(key); for each (key in keys.sort()) { out += arguments.callee(data[key], maxObjectNests, level + 1, key + ' = '); } } else { out += pad + ' ... abbreviated ...\n'; } break; } break; } return out; } /** * 変数の内容をダンプする * * @param foo dumpToText参照 * @param maxObjectNests dumpToText参照 */ public static function dump(data:*, maxObjectNests:Number = 10):void { trace(dumpToText(data, maxObjectNests)); } } Code Fullscreen Preview Fullscreen Pual ProjectNya ObjectEncoding.AMF0 height width align size trace BitmapData length Number