忙しいときに気晴らしにちょこっと関係ないFlashができるのがWonderflのいいところ。

ひとのやつをちょこっと高速化させてみました。けど思ったほど軽くならなかった。

どれが実際効果的かわからないけど、やるだけやってみたこと。

  • Math.PIをループ外でローカル定数にいれる
  • その他変化しない数値やクラスメンバもループ外でローカル定数にいれる
  • 要約できる演算はループの外で1回だけ行う
  • 配列などのインスタンスメンバもローカル変数に入れる
  • 1ループで4回くらいまとめて処理する(この場合nullチェックとどっちが重いか謎)
  • 0.0-1.0でNumberで計算してたのを1000かけてintで計算する
  • BlurFilterをTimerで別のサイクルで実行

他にできそうなこと

  • 要らなくなった要素を配列から消す処理を別のサイクルで行う(spliceがたぶん重い)
  • 三角関数テーブルをつくる
  • 色相環テーブルを使う

元ねたはSaqooshaさんのこれ

パーティクル自体がなくなったら軽くなるかとおもって消してみたらこれはこれでおもしろかったので保存。宇宙的というか描画にインターバルがあるのが逆に雰囲気出てます。

実際はFilterかけるのよりもパーティクルの描画が一番重いみたいです。Filterかける時間の間隔を変えてもあまりFPSには大きく変化がありませんでした。(PCのスペックによるかもしれないけど)

さっきのをBlurFilterを調整してた途中でた、間違ってblurYを巨大にしたらなんだかオーロラ感がたまらない感じになったので、すかさずForkしておいたもの。

途中でどんどん調整できてしまうのですが、やろうとしてたものに極力そこでとどめ、派生して見つけた表現は別途Forkしていくかたちにすると後で見たときに見やすいなあと思いました。

HTML5飯