新しい Progression 開発に向けて、少しづつ技術検証をしているのですが、ちょっとどうしようもない状況に遭遇したのでメモ。
まずは以下の wonderfl を実行してみてください。
※同時に実行すると正しい結果にならないので、ブラウザを再起動するなどして個別に実行してください。
正常な動作
http://wonderfl.kayac.com/code/951c262d616b807aa22f7373c78178e2daa35906
問題版(メモリが完全に解放されない)
http://wonderfl.kayac.com/code/b954ee245607250e4e047ea8cf53a5fbb13e0f49#code_forked
今回は 100000 個の MyObject インスタンスでの検証ですが、だいたい 2.4 MB 程の差が生じてしまっています。
この問題の影響範囲まではまだ確認できていませんが、割とシンプルな操作で解放不能になってしまうので、何かしらの参照が残ってしまっている場合には、解放できないオブジェクトが増えていってしまいそうですね・・・。
この件について何か情報をお持ちの方がいれば、本エントリーのコメント、またはフォーラムまでお寄せください。
追記
クラスメソッドじゃなくてインスタンスメソッドでした。
‘開発’ カテゴリーのアーカイブ
[開発] インスタンスメソッドの参照を保存するだけでメモリリーク
2009年3月2日 月曜日[開発] シーンエディターについて
2008年7月24日 木曜日

シーンエディターで予定している機能をレイアウト上にまとめてみました。
詳細な設定は省いて、基本構造を作成する機能に注力したエディターになっています。
また、通常の XML の読み込み/書き込み機能の他にシーン構造をクラスファイルで書き出したり、fla ファイルの選択フレームのアクションとして書き出すことができます。
EasyCasting モードでは、キャストオブジェクトの設定が可能で、設定したキャストと関連付けられたシンボルが存在しない場合には、一発作成機能も備えます。
大分やりすぎ感があるので、どこまで実装できるかどうかは怪しいですが、ここまできたら全部載せする予定ですので、何かご意見があればどんどんお寄せください!
[開発] 新プロジェクトパネルについて take 3
2008年7月10日 木曜日

まだ全然調整中ですが(主に自分用の)進捗です。
大まかな方向性はこのままで、ブラッシュアップしていけばいい感じになりそうですね。
もうちょっとアクセントが欲しいかな?
あんな機能欲しい!この機能は余計だよ!などなど、まだまだ募集していますので、お気軽にコメントしてください。
初めて CS3 のコンポーネントスキンを作りましたが、v2 コンポーネントの Halo に比べて格段に作りやすくなってるけど、まだまだクセがあるようですね。
ただ、スタイルも一緒に調整しながら作っていけばそこそこ思い通りにカスタマイズできたので、これはこれでもうちょっと普及してもいいんじゃないかなと思いました。
ただ、スキンプレビュー用に配置されているインスタンス座標に小数点があったり、9 スライスのガイドが微妙にズレていたりして設定がかなり大味だったので、次回からスキンは日本人に任せた方がいいんじゃないかなと・・・。
[開発] 新プロジェクトパネルについて
2008年7月9日 水曜日
次期バージョンのオービタで予定している新プロジェクトパネルについて、とりあえずレイアウトを作ってみました。
※デザインは前回のものをベースに仮組みしたものです。

最大の変更点は、大量に追加された設定項目です。
Progression Framework の基本方針として「FLASH 開発者に HTML を触らせない」という目標があるので、HTML を触らなくてもよくなる設定について大量に増やしました。
中央部分がアコーディオンメニューになっており、その内容を全て展開したものが右の図になります。
特に細かい指定をする必要がなければ、基本設定のみを変更することで以前のパネルとほぼ同じステップ数で新規プロジェクトの作成まで完了できると思います。
※ ActionScript カテゴリは、プロジェクト種類が「クラス」の場合のみ有効。
また、「新規プロジェクトを作成する」ボタンでプロジェクトを作成し、「アップデート」ボタンで既存プロジェクトを最新バージョンにアップデート、「パブリッシュ」ボタンで指定されたプロジェクト内にある fla ファイルを全てパブリッシュします。
「パブリッシュ」ボタンでカレント状態の fla ファイルが属しているプロジェクト内にある fla ファイルを全てパブリッシュします。カレント状態の fla ファイルがプロジェクトに属していない場合には、単体でパブリッシュします。
環境設定の内容についてはまだ未定ですが、主に以下のような機能を考えています。
- バージョンアップ確認の有効/無効
- 現在の設定をデフォルトにする
- 設定を全てリセットする
[ 2008/07/09 20:02 追記 ]

より細かく作ってみました。
- 背景色の横に文字列で指定するテキストフィールドを追加
- 「SWFForceSize を使う」を「HTML で最小サイズを制限」に変更して基本設定に移動
- Flash 設定に「Mac でマウスホイールを有効化」を追加
- HTML 設定を Google Analytics 設定に変更
- 環境設定を追加
- 右上に公式サイトとリファレンスへのリンクを追加