2009年11月アーカイブ

ふんふん

2009年11月23日
最近ちょっと更新が滞ってます。
バンドの手伝いとか、手伝いじゃないのとか、色々もさもさしてて。

久しぶりに記事みなおしてみると色々直したいとこがあるなあ。。
とりあえず気になったのは、レンズフレアの記事で
もしかして黒に塗ってる意味ない?とか、
記事ではチャンネルコピーしてるけど
画像そのままコピーしてぼかしてアルファ値調べればいいだけ?とか・・・
負荷はあまり変わらないのかもしれないけどね。
落ち着いたら修正するかもしれません。
Flashコンテンツ(AS3)のステージ内で
マウスを押した(MouseEvent.MOUSE_DOWN)ままFlashの領域外までドラッグした時、
そのままではマウスを離したイベント(MouseEvent.MOUSE_UP)を検出できないんだけど
マウスがFlash領域から出た時を検出できるEvent.MOUSE_LEAVEを使うと
マウスダウン→領域外までドラッグ→マウスアップのタイミングでもイベントが取れるので
これを利用してボタンの表示を元に戻したりドラッグ処理を停止したりできます。
ただ、swfをhtmlに埋め込む時にwmodeを指定していると
環境によってはEvent.MOUSE_LEAVEイベントが発生しない事があるっぽい。。。
renderer.clipping = new FrustumClipping(~);
とかやっていると、
カメラを高速で回転した時とかに画面の端でポリゴンが
一瞬カリングされてしまう謎の現象があったんだけど
jp.ferv.blogさんの記事でやっと対処法がわかりました。

FrustumClippingを使うときはCamera3D.targetは使わず
代わりにCamera.lookAt()を使えば解決するようです。

で、これでめでたしめでたしと思いきや何故か上手くいかなくて、
結構長い間フガフガしてたんだけど
BasicViewクラスを使う時に
new BasicView(640, 480, false, false);
って第五引数を省略してたせいで
カメラタイプがデフォルトの"Target"になってしまってて
コンストラクタでcamera.target = DisplayObject3D.ZERO;されてたのが原因だった。。
いつも省略してたから全然気付かなかったよ・・・

new BasicView(640, 480, false, false, CameraType.FREE);
こんな風に第五引数を"Free"にして解決。