ActionScript3で使うと便利なライブラリでlog関数があります。
log(s);
で呼び出したときに、Firebugがインストールされてあると、console.log(s)が実行される仕掛けです。
ただし、この関数はFirebugがインストールされてあることが前提のものなので、たとえばIEを利用している場合は表示がおかしくなる場合があります。(真っ白になったり。)なので、console.logを呼び出す際にうまくラップしてあげた方がベターです。たとえばこんな感じ。
package {
import flash.external.ExternalInterface;
import flash.utils.getQualifiedClassName;
public function log(... args):void {
var inspect:Function = function(arg:*, bracket:Boolean = true):String {
var className:String = getQualifiedClassName(arg);
var str:String;
switch(getQualifiedClassName(arg)) {
case 'Array':
var results:Array = [];
for (var i:uint = 0; i < arg.length; i++) {
results.push(inspect(arg[i]));
}
if (bracket) {
str = '[' + results.join(', ') + ']';
} else {
str = results.join(', ');
}
break;
case 'int':
case 'uint':
case 'Number':
str = arg.toString();
break;
case 'String':
str = arg;
break;
default:
str = '#<' + className + ':' + String(arg) + '>';
}
return str;
}
var r:String = inspect(args, false);
trace(r)
ExternalInterface.call('function(){ if(typeof console == \'object\' && typeof console.log == \'function\') return console.log.apply(this, arguments)}', r);
}
}
console, console.logの存在判定してるだけですけども、忘れて素のlog関数をコードに入れっぱなしにしておくと思わぬハマり方をする場合もあると思うので、こんな風に予防線張っておくのもいいかと思います。
Google Adsense
Social bookmark comment : 0
No comment.
Comment : 0
Trackback : 0
- TrackBack URL for this entry
- http://blog.katsuma.tv/mt-tb.cgi/117
- Listed below are links to weblogs that reference
- ActionScriptで使うlog関数のエラー対策 from blog.katsuma.tv
2008/01/31 (Thu)