Saqoosha

flashlog.txt をカラーにする

Blog

Vimeo で見ると HD サイズで見れるお)

久しぶりに FLARToolKit とは関係ない Flash をやってみております。というかなんかふと思いついたんだな。自分でもなんでこんなん思いついたのかよくわからない。まあいいや。えっと、タイトル通りなんだけど、みんな Flash のデバッグは何つかってるかな? 基本、trace したログを何らかの方法で見たりしてると思うのだけど。僕は Terminal.app で flashlog.txt を眺めてるのね。

tail -f ~/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt

Terminal.app(あー、Mac ね)開いて↑のコマンドを入れる。と、まあ、だーっと流れる。Unix 流ログ眺め方法。んでまあぼけーっと見てたときに思いついたんだろうね。ターミナルだったらエスケープシーケンス使えるんじゃ?と。エスケープシーケンスっていうのは、むかーしむかし、MS-DOS とかいう OS がありまして、っていうぐらい昔、GUI がないころに作られた仕組みで、特定の文字列を表示させるとカーソルの位置とか文字の色を変更できる。じゃあ trace でエスケープシーケンス出力すれば色とかいじれるやん?ってわけですね。

んで、できたのが ColorLog てやつ。
これを使えばエスケープシーケンスとかわからなくても色とカーソルの操作が簡単にできちゃう。もちろん Terminal.app で tail して flashlog.txt を見る前提(Windows だと Cygwin?)。とりあえず作ってみたデモはまったくの遊びなのでこんなことまでできますってだけだけど、うまく使えば実用的になるんじゃないかな。エラーレベル(info とか warn とか error とかってやつ)で色変えるとか。問題は Terminal で tail する以外の方法で開こうとするとエスケープシーケンスだらけで読めないっていうとこか。。。

ダウンロードはこちら。ムービー内で使ってたデモもいちおうアップ。swf だけ見てもしかたないので flashlog.txt を眺めてください。α版レベルのブツですのでサンプルとか見てわかる人だけ使ってみてくださいまし。Spark project にもつっこんであるのでいい感じに改良してくれても可。

大阪てら子 22 「webカメラで遊ぼう!」

BlogEvent

2009051101-Teraco22

先月はじめて休んだので、久しぶりな感じ。てら子。やります。今回はうちの会社のオフィスが広くなってきれいになったので、うちでやってみます。ちゃんとした写真がまだないけどこんなん。ネタはシナチクが FLAR とかやっといたらいいんちゃうんとかいうので、もうちょっと広げて Web カメラで遊ぶってことにしました。Web カメラ持ってる人は何か作ってきてみたらいいんじゃないかな。FLAR の質問とかも受け付けますよ。

5/23 14:00 から。参加受付はこちらー

Categories: Event

BetweenAS3Thread

Blog
package net.saqoosha.thread {

import org.libspark.betweenas3.tweens.ITween;
import org.libspark.thread.IMonitor;
import org.libspark.thread.Monitor;
import org.libspark.thread.Thread;

public class BetweenAS3Thread extends Thread {

private var _tween:ITween;
private var _monitor:IMonitor;

public function BetweenAS3Thread(target:ITween) {
_tween = target;
_monitor = new Monitor();
}

public function cancel():void {
interrupt();
}

override protected function run():void {
_monitor.wait();
interrupted(interruptedHandler);
_tween.onComplete = _monitor.notifyAll;
_tween.play();
}

private function interruptedHandler():void {
if (_tween.isPlaying) {
_tween.stop();
}
}
}
}

Very simple.