スキップしてメイン コンテンツに移動

投稿

ActionScript 3.0 Garbage Collectionのテスト

Duke Software: ActionScript 3.0 でのSoundのメモリリーク解消方法 の投稿にブックマークをして下さっている方がいるのに、自分で何もテストしないのはお恥ずかしいので、Flashのメモリ管理、特にガーベッジコレクションについてその挙動を調べてみました! 結論から書きますと、 Array を使うのが最も安全なようです。(あくまで私がテストした環境においてです。保証はできません。)System.gc();を明示的に呼び出せば、下記でテストしたすべての場合でメモリが開放されますが、System.gc();はデバッグ版のFlash Playerでしか呼びさせなかったはずなので、止めておいた方が無難だと思います。 テスト環境 Flex :Flex 3.5 (build 12683) Flash Player:WIN 10,0,42,34 (Capabilities.versionから取得) 方法: 1) クラスにフィールド(1. Array, 2. Object, 3. 自作のdynamicクラス)を定義 2) 画面をクリックするごとに、Vector. オブジェクトを生成して1)で定義したフィールドに代入 3) クリック直後とクリックイベント検知1秒後のメモリ使用量をSystem.totalMemoryで取得 1. Array - すぐに開放される package test { /** * The most safe way... * * @author Duke */ public class GarbageCollectorArrayPropertyTest extends GarbageCollectorTestBase { private var a:Array = new Array(1); public function GarbageCollectorArrayPropertyTest() { } protected override function createObject():void { // Yeah garbage collection is triggerd and works properly :) a[0] = new

SWF内のクラスを抽出するライブラリ

最近、SWFファイルを解析してそのSWF内に含まれるクラスの一覧を取得する方法を考えていました。ちょっとGoogle先生で調べていたところ、まさしく「SWF内のクラスを抽出するライブラリ」そのものを公開しているblogを見つけました! Swf Class Explorer for AS3 公開されている方法は、SWFのバイナリを解析して、クラス情報を抽出するという方法をとっています。SWCファイルとライブラリの使い方のサンプルだけでなく、ソースコードそのものも公開されています!こういうものをサクッと公開できるセンスには脱帽です・・・。 私なりにサンプルを書いてみました。 package utils.tool { import com.flassari.swfclassexplorer.SwfClassExplorer; import flash.display.Loader; import flash.display.LoaderInfo; import flash.events.Event; import flash.system.LoaderContext; import flash.utils.ByteArray; /** * ... * @author Duke */ public class SWFLoadHelper { public static function loadClasses(swf:ByteArray, start:Function, inLoop:Function, finish:Function):void { var complete:Function = function complete(e:Event):void { start(); var loaderInfo:LoaderInfo = (e.currentTarget) as LoaderInfo; var classNames:Array = SwfClassExplorer.getClasses(swf); loaderInfo.removeEventListener(Event.COMPLETE, complete); for each(var className:String

Windows上で開発する際のちょっとした便利ツール

画像編集 GLab Bumy Paint Gimp AzPainter : かなり高機能な画像処理ソフトウェアです。 2011/12/25 追記: 作者様のサイトによると開発は中止したようです。残念。ソフトの公開(ダウンロード)は続けるようです。 JTrim : フリーでこれだけ対応しているソフトウェアは珍しいと思います。すばらしい! Logo Shader : 様々な質感のロゴを作成できるソフトウェアです。お勧め! Tex TeX Wiki 日本語のTexの解説サイトと言ったらここしかないでしょう! デバッグ DebugView テキスト系ファイルの差分表示 WinMerge Rekisa Vim にも差分の表示機能があります。 Not classified yet http://www.deepamehta.de/ CCFinder FREE PDF Printer : 高機能PDFライターソフトウェア http://www.metaseq.net/ : 3D Modeling Software 自動ブロック化・通信最適化ライブラリ ABCLib FFMpeg http://www.fraps.com/ : Direct X Capture SVG Viewer (Adobe)

Emacs Tag jump

Example: Generate tag file all c and header files under current directory. etags ./*.c ./*.h After tag file is generated, if you type M-. , you can quickly jump to the definition of function on your cursor. If you type M-* , you can go back to the previous position.

特定の文字列のみを取り除く正規表現

特定の文字列のみを取り除く正規表現は、以下のように表現します。 ^(?:(?!ABCD|XYZ)).)[A-Z]+ 上記のパターンは、ABCDとXYZのみを除く、任意のAからZの一文字以上の組み合わせにマッチします。 マッチしない文字列を新たに追加する場合、例えばIJKをマッチさせたくない場合は、 ^(?:(?!ABCD|XYZ|IJK)).)[A-Z]+ のようにすればOKです。

ActionScript 3.0のVector.unshiftメソッドのバグ(Flex 3.2)

以下のBugはFlex SDK 3.2の時に発生しました。 Flex 3.5では既に直っています。 古い環境を使っている人は要注意! ArrayクラスよりもVectorクラスを使った方が大抵は高速なので、ArrayクラスをVectorクラスに置き換えていました。その作業中に、Vector.unshiftメソッドで先頭に挿入されるはずの要素が挿入されないバグに遭遇しました。 環境:Flash Player 10.0 r12, Flex SDK 3.2 var v:Vector. = new Vector. (); v.push("A"); v.push("B"); v.push("C"); v.unshift("D"); trace(v); // result will be somehow ["A", "B", "C"] !! 他のブログでも既にバグとして報告されていました。 Vector.unshift () bug Vector bug in FP10