今回の記事は、最近GoogleSwiffyを扱っていて、FLASH内のtraceがJavaScriptのconsole.logとして出力される事に気づいたのでメモしておきます。
これが導入されたのはいつかは定かで無いのですが、少なくともバージョン4.9の段階では導入されているようです。
早速、簡単に挙動を追ってみます。
FLASH
まず、FLASH。
[SWF]https://www.1ft-seabass.jp/memo/archives/google-swiffy-014/google-swiffy-014.swf,320,480[/SWF]
このように、書いてある通りのtrace文をフレームスクリプトで実行しています。
trace( 1234567890 );
trace( “テスト” );
trace( “$version : ” + $version );
trace( “getTimer() : ” + getTimer() );
trace( [ “a” , “b” , “c”] );
trace( new Array() );
trace( { key:”value” } );
trace( new Object() );
trace( new Sound() );
trace( new Date() );
trace( “改行\r改行\n改行” );
trace( “&” );
FLASHアプリケーションの出力ウィンドウには以下のように表示されます。
1234567890
テスト
$version : WIN 10,2,153,2
getTimer() : 17
a,b,c[object Object]
[object Object]
[object Object]
Wed Nov 21 02:02:47 GMT+0900 2012
改行
改行
改行
&
Google Swiffy
これをSwiffyで変換します。
Chromeのデバッグウィンドウなどを開いてconsole.logを追跡できるようにしてから開いてみてください。
Chromeのデバッグウィンドウでは、このように出力されます。
[trace] 1234567890
[trace] テスト
[trace] $version : Swiffy 4.9.0
[trace] getTimer() : 77
[trace] a,b,c
[trace]
[trace] [object Object]
[trace] [object Object]
[trace] [object Object]
[trace] Wed Nov 21 2012 02:02:10 GMT+0900 (東京 (標準時))
[trace] 改行
改行
改行
[trace] &
時間やgetTimerについては表示する時期がズレてるので違いがあるのは当然として、ほぼ同じように出力されますね。変数の中身もちゃんと展開されます。
ほか気づいたところを挙げておきます。
- [trace]とヘッダーがついてて他のJavaScriptでのconsole.logとも区別しやすくステキ。
- スクリプト実行行は4.9の段階では runtime.js:243 と243行で実行。
- Dateオブジェクトは若干文字列展開が違う
- Javascriptの表現形式?
- \rや\nの改行コードも忠実に再現
- \rは見た目上「改行改行」となっていたがテキストで拾ってみると改行発生しました。
- 特殊文字の表記も忠実に出るよう。今回は&をやってみたが問題なし。
- なんと、$version表記が、ちゃんとSwiffyでは「Swiffy 4.9.0」と違いが出る。
- JavaScriptでconsole.logにObject型の中身を渡すと展開してくれるが、FLASHに合わせて[object Object]表示。忠実。展開してくれてもいいんですよ?
・・・やるじゃない!便利!
おわりに
いかがでしたでしょうか。これが使えると、FLASHとSwiffyの値の挙動の違いだったり、バグが起きた時のデバッグが深くまで行えるので便利だと思います。
事実、最近、とあるMovieClipでアニメがちゃんと動いているかの調査が行えて助かりました。
今回のソースコードも以下においておきます。
.fla(CS6作成)データダウンロード:google-swiffy-014.zip
※CS6のflaは、CS5.5で開いても警告が出るものの問題なく扱えるようです。CS5.5の方も是非試してみてくださいませ。
それでは、よきGoogle Swiffy Lifeを!