l'essentiel est invisible pour les yeux

Saturday, January 26, 2008

[AS3] ActionScript 3からFirebugを使うas3zerobugを作った

こんにちは。初めてのAction Scriptネタです。(最初で最後?)
昨日から、(JSで出来ない事があったので)Action Script 3を書き始めました。

AS3の開発環境を構築し、次にデバッグ環境を構築しようと調べていると、ASでは、traceやfdbを使えばよい、Mac OS XからTraceを出力する方法は…と色々と書いてあったのですが、面倒なので、Action Script 3からFirebug consoleへのシンプルなラッパーを作りました。使い方は、Firebugのconsole APIと同じです。

as3zerobug


サンプル(Firefox only)
Firebugのコンソールを開けて下さい。

zerobug::console sample



ソースコード

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
width="100%"
height="100%"
backgroundGradientColors="[0xFFFFFF, 0xAAAAAA]"
creationComplete="init();">

<mx:Script> <![CDATA[
import zerobug.Console;

public function init():void
{
var console:Console = new Console();

// start the timer
var timerId:String = 'zerobug';
console.time(timerId);

// Primitive Number
console.log(1985);
console.log("int - %d", 1985);
console.log(new Number(0.434294482));
console.log('Number - %d', new Number(0.434294482));

// String
console.log('Hello world!');
console.log('Hello world! from %s', 'Action Script 3');

console.log(new String('Hello world!'));
console.log('String - %s', new String('Hello world!'));

// Date
var now:Date = new Date();
console.log(now);
console.log('Date - %s', now);
console.dir(now);

// Array
var arr:Array = new Array([1, 1, 2, 3, 5]);
console.log(arr);
console.log('Array - %s', arr);

// stop the timer
console.timeEnd(timerId);
}

]]></mx:Script>

<mx:VBox>
<mx:Label fontSize="16" htmlText="Zerobug::Console API test."/>
<mx:Label fontSize="16" htmlText="Plase enable Firebug and see console of Firebug."/>
</mx:VBox>

</mx:Application>


インストール方法
Google Codeからチェックアウトして、bin/zerobug.swcをコンパイル時に読み込むライブラリに加えて下さい。

% svn co http://as3zerobug.googlecode.com/svn/trunk/ aswzerobug


ORSWF-config.xmlのサンプルです。適せんパスを変えてください。

<flex-config>
<compiler>
<library-path append="true">
<path-element>zerobug.swc</path-element>
</library-path>
</compiler>
</flex-config>



開発環境は、IDEが苦手なオールドタイプなので、RailsEditor, id:secondlifeさんのrascutをインストールした。(rascut素敵!Thank you!!)

Macだと、fsch, mxml共に日本語(SJIS)で出力されて文字化け & rascutが動かないのでユーザ定義定数を修正。

fcsh

#java $VMARGS "-Dapplication.home=$FLEX_HOME" -jar "$FLEX_HOME/lib/fcsh.jar"
java -Dfile.encoding=UTF8 $VMARGS "-Duser.language=en" "-Dapplication.home=$FLEX_HOME" -jar "$FLEX_HOME/lib/fcsh.jar"


P.S.
ECMAScript 4 (pdf)も、AS3のプログラミングパラダイムを受け継いでおり、ダックタイピング周りの構文が追加されている。触り始めたばかりだが、個人的には、Javaライクなプログラミングよりも、Javascript1.8のPythonスタイルの方が美しいし楽しい。下ならとことん下。CPUのパイプライン命令レベルで最適化する。上ならとことん上。抽象の世界で美しくコードを書く。私はそんなのが好きだ。