Project

> Mangrove World

オンライン植林コンテンツのFlash実装を担当しました。

Tweenerはあれだし、
期待の慣れないTweensyを使いましたが、
やはり慣れなかった。

無駄に下手に、
ガーベージコレクターを助けようと、
disposeメソッドで多くの必要なくなったプロパティを、
丁寧に、nullとかNaNとかにしていたつもりなのですが、
予想外のnullなのでエラーなのですよ。
みたいなエラーメッセージに悩まされ、
どこがだよ、すいません。

実際、flashで、ガーベージコレクションされる有効なdispose方法を
知ったかぶっている事が問題だと納品した翌日くらいに思った。
> PC 選択ガイド 「金のPC」

Flash実装を担当しました。


ミケランジェロの上半身の彫像は、
一般成人男性くらいの上半身の大きさなのですが、
撮影したすべての彫像を頂けるらしい。

イェイ。
as2でもas3でも、
flvの再生で、NetStreamのonStatusイベントを、
監視して、プログラムすると、
Play.EmptyとかPlay.Fullとかいちいち律儀に
発生して、やりずらい。
アニメーションイベントを意識しないで
作る人は、そんなことはないかもしれない。

EmptyとかFullは、バッファ中かどうかを知りたいときとかに使うけど、
実際バッファ中かどうかというよりも再生が、
止まっているか正常に近いレベルで進んでいるかを知りたい。
ユーザーが気にならない程度のバッファなどはどうでもいいんだが、
Play.Buffer、Play.Emptyイベントはいちいちうるさく相手にしにくい。

private var playing:Boolean;

private var checkPlayheadProgressIntervalID:Number;

private var checkPlayheadProgressIntervalTime:Number=.5*1000;

private var prevPlayheadTime:Number;

private function checkPlayheadProgress():void{
  if(playing){
     if(ns.time==prevPlayheadTime){
        //止まっている。
        //dispatchEvent(new FLVEvent(*****));
     }else{
        再生されている。
     }
 }

 prevPlayheadTime=ns.time;
}

こんな感じで、インターバル前のplayHeadの時間を保持し、
インターバルで直前のplayHeadをチェックするし、
再生が正常なレベルかどうか確認する方が、
onStatusを調べるよりもずっと楽な気がする。

あと例えば、
time outエラーのような画面も強制的に表示できるかもしれないし、
ユーザーの回線環境なども簡易的に判断できるといえばできるかもしれないし、
イベント発生を自分で意図的に操作しやすい気がする。

あとonStatusのエラー系のイベントも
結局ユーザーが知りたいのはエラー内容じゃなくて、
エラーが発生したかどうかだと思うから、

エラー系のイベントはまとめて、
private function onError(errorMessage:String){
    dispatchEvent(new ErrorEvent(ErrorEvent.Error , false ,fasle , errorMessage));
}

としておくと楽。

ついでにNetStatusEventをすべてブロードキャストする

private function onNetStatusEvent(evt:NetStatusEvent):void{
    dispatchEvent(evt);
}

も実装すると安心。

でも、調子のって、あんまりクラス複雑にしすぎちゃうと、
僕の力では、FLVPlaybackが使いづらいのと同じように使いづらくなった。

細かい機能部分は、こんな感じのクラスに委譲するクラスを、
プロジェクトによって作った方がいいと思った。


> セントリーノ氏の優雅な週末


FLV約180個。。