AIRやFLASHなどを表示するのに不便なので、ブログから自作サイトに移転します。
『N2-Works移転先
』
今後はこちらで更新を行っていきます。
AIRやFLASHなどを表示するのに不便なので、ブログから自作サイトに移転します。
『N2-Works移転先
』
今後はこちらで更新を行っていきます。
Loaderを使用したSWFデータの取得において、widthやheightなどの定義場所が分かりにくいのでメモ。
今回はAVM1Movieではなく、Flash CS4でFlash Player9用でActionScript3.0用でPublishしたAVM2MovieなのでMovieClipにキャストしています。
以下コードです。
// SWFの読込み
var context:LoaderContext = new LoaderContext();
context.allowLoadBytesCodeExecution = true;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, SwfLoaderCompleteHandler);
loader.loadBytes({SWFのバイナリデータ}, context);
function SwfLoaderCompleteHandler(evt:Event) : void
{
// ロードしたバイナリをMovieClipに変換
var loader:Loader = evt.target.loader;
var mc:MovieClip = loader.content as MovieClip;
// width確認(これでは駄目。結果は0)
trace(mc.width);
// width確認(こっちではOK。結果は正しく出力された)
trace(mc.loaderInfo.width);
}
|
上記のように、キャストしたインスタンスのプロパティを参照しても値は0のままです。Bitmapをキャストした時にはwidthが挿入されているのに何故?といった感じです。
とりあえずはMovieClipのloaderInfoの中に値は格納されているみたいです。MovieClipもBitmapもDisplayObjectからの継承なので違いはないと思うのですが、なぜMovieClipの場合はloaderInfoの中でしか定義してくれないのでしょうか?
じゃあ自分でwidthに挿入しようと思い、
mc.width = mc.loaderInfo.width;
|
などとするとMovieClipが表示されなくなりました。どうやらMovieClipは直接widthの値を直接入力して大きさを変更することはできないようです。
mc.scaleXは値が格納されていて、新たに数値を挿入すると反映されますので、大きさを変えたい時はこちらを使用しろということなのでしょう。
|