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

投稿

ラベル(ActionScript)が付いた投稿を表示しています

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

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

ActionScript 3.0 ライブラリ集

ライブラリのリンク集 ntt.cc で細かく紹介されています。記事へのリンクは こちら から。 noein さんの このページ でもいろいろ紹介されています。 phpspot開発日誌 さんでも大量にリンクが紹介されています。リンクは こちら から。 Adobe Labs でも有用なライブラリが このページ で多数公開されています! Spark project では非常に有用なライブラリが公開されています。是非チェックしてみてください! Adobe Open Source テスト flexunit :テストライブラリの定番 asunit : 私は2009年頃、このライブラリを使っていましたが、どうやら最近は更新をしていないようです。 Dukeさんの気になるライブラリをピックアップ printf-as3 : ActionScript 3.0で実装されたprintf AS3DS : データ構造(スタック、キューなど)のライブラリです。 log4as3 : ActionScript 3.0のためのlogging APIです。log4jのActionScript 3.0版といったところでしょうか。 Flex: Using the Flex3 Logging API でlog4as3以外のlogging APIについて比較・検討されています。 AS 3 Parametric Curve Library :パラメトリック曲線に関するライブラリ alivepdf :ActionScript 3.0で実装されたpdf生成のためのライブラリ as3xls : ActionScript 3.0 からMicrosoft Excelを読み書きするためのライブラリ ActionScript TIFF Encoder :ActionScript 3.0で実装されたTIFFエンコーダーです。 Kevin Hoyt さんで公開されています。素晴らしい!! as3gif :ActionScript 3.0で実装されたFlash上でGIFアニメを再生するためのライブラリです。 PaperVision3D :Flash上で高度な3Dグラフィックスを実現するためのライブラリです。Coolなデモがたくさん揃っています! ASTRA: Acti

ExportSWC - FlashDevelopでswcファイルを生成

ExportSWC というアドインで FlashDevelop からswcファイルを生成できます。 私はこのアドインを使って、swcファイルを生成しようとしたのですが、以下のエラーに遭遇しました。 --- Error: could not find source for resource bundle containers. Error: could not find source for resource bundle core. Error: could not find source for resource bundle effects. Error: could not find source for resource bundle skins. Error: could not find source for resource bundle styles. --- Google先生で調べてみると、以下のページを見つけました。 Unable To Generate a SWC if using a third party SWC 結論から書きますと、 -library-path {flexSDK}/frameworks/locale/en_US をCompiler Optionに加えればいいようです。私は面倒くさかったので、必要なswcファイルを全部かき集めて1つのディレクトリ(例:lib)に入れて、 -library-path lib をCompiler Optionに加えてコンパイルしました。:)

ActionScript 3.0 でのSoundのメモリリーク解消方法

ActionScript 3.0のSoundクラスを用いてメモリ上にロードしたサウンドの開放方法が分からなかったので、Google先生で調べてみました。いくつか有用な記事が見つかりました。 Arrayの要素としてSoundオブジェクトを生成、deleteおよびnull代入によって開放を行うようです。 Memory Optimization Flash Action Script 3 AS3 - Working with Sound. 2010/3/25 追記 私もロードされたデータを開放できるSoundクラスを書いてみました。ご自由に利用してください。むむむ、余計な部分があって長過ぎですね。。。 package utils.sound { import flash.errors.IOError; import flash.events.Event; import flash.events.IOErrorEvent; import flash.media.ID3Info; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundTransform; import flash.net.URLRequest; public class SoundCacheCore { public static const LOADING:int = 0; public static const LOAD_COMPLETE:int = 1; public static const NO_LOAD:int = 2; private var _url:String; private var sound:Array; private var sndChannel:SoundChannel; private var _duration:Number; private var _loadStatus:int = NO_LOAD; private var _isPlaying:Boolean; private var _pauseTime:Number; private var _initialSoundVolume:Nu

ActionScript 3の高速化

ActionScript 3 最適化・高速化Tips 簡易まとめ ActionScript 3の高速化に関する記事です。 Seven tips about performance optimization in Actionscript 3 の記事も参考になります。 AIRLife.net さんの 記事 も大変参考になります。