2009-11-23

s5fの画像リソース読み込みまわり

ようやく最低限の実装が出来た。

最近はエラー時の細々とした処理を実装していた。エラー報告用のUIと再試行・無視の処理など。

事前読み込み用のコマンドなんかも用意したけど、ネットワークの速度が速くて、使わなくてもそれほど困らない。まあ、安定した動きをさせたいのなら使っておいた方が良いんだけど。こういう機能ってテストが難しい。

2009-11-23

flash.display.BitmapDataのメモリリーク?

タスクマネージャでスタンドアロンのFlashPlayerが猛烈にメモリを食っていることが分かって、長々と調べた結果、どうやら自分で作ったBitmapDataインスタンスのdispose()を呼んでいないことが原因らしい。えー、何で何で? たぶんどこからも参照されていないと思うんだけど。ローカルフレームからの参照が残ってるのかなぁ。そんなわけないよな、new BitmapDataして変数に入れただけでは残らないし。

ん? new Bitmap(new BitmapData(640, 480, false, 0)); と1行書いただけでダメみたい。もちろん作ったオブジェクトの参照は変数にも入れていないし、addChildもしていない。なんか内部的な理由によるものなんだろうか……。

Loaderで読んだBitmapやBitmapDataはdisposeしなくてもちゃんと解放されてるみたいなんだけどなぁ。

2009-11-20

寒い

今週になって大分気温が下がってきた。

キーボード作業が多少つらくなってきた。

布団ももう少し厚めのものじゃないと、これからがちょっと不安。

自転車も手袋無しではそろそろ限界。

2009-11-20

flash.net.URLLoaderの同時接続数

一度に沢山のURLLoader(やLoader)を作って多数のデータを同時にロード開始しても大丈夫なのかなぁ、と疑問に思ったので試してみた。

  • サーバー上に5MBの適当なファイル(test.dat)を用意。
  • 16個のURLLoaderで("test.dat?date=" + (new Date()).getTime() + "&count=" + count++)というようなURLでキャッシュを回避してダウンロードするActionScriptを書く。それぞれのダウンロードの進捗状況を個別に画面に表示させる。
  • コンパイルしたswfをtest.datと同じ場所に置く。
  • ブラウザでそのswfを開いてダウンロードの状況を観察する。

結果。

  • Firefoxでは最大で6個同時にダウンロードした。これはabout:configのnetwork.http.max-persistent-connections-per-serverの数に一致し、値を4へ変更したら最大4個同時にダウンロードするようになった。
  • IE8(Vista)では最大10個同時にダウンロードした。これはレジストリのHKEY_CURRENT_USERのSoftwareMicrosoftWindowsCurrentVersionInternet SettingsMaxConnectionsPerServerの数に一致し、値を8へ変更(かつIEの再起動が必要だった)したら最大8個同時にダウンロードした。

URLLoaderを沢山インスタンス化して同時に沢山のloadメソッドを呼んでも、ブラウザの同時接続数設定に従って順次ダウンロードが行われるようだ。

ただ、この挙動に頼って良いものかどうかは未だ疑問。