ASが運営するWebサイトに飛びます

2008年06月24日

Loaderオブジェクトがロードしたファイル名を取得するメソッドを作りました。

Loaderオブジェクトがロードしたファイル名を取得するメソッドを作りました。

Loaderオブジェクトの、contentLoaderInfo.urlプロパティから解析。

以下 ソースコード

var my_lo:Loader=new Loader();

my_lo.contentLoaderInfo.addEventListener(Event.COMPLETE,loadC);

my_lo.load(new URLRequest("sample.swf"));

function loadC(evt:Event)
{
trace("evt.target.content.parent="+evt.target.content.parent);
var load_lo:Loader=evt.target.content.parent;
//Loaderからロードされたファイル名を取得
var name_str= analyzeFileName(load_lo);
trace("name_str="+name_str);
}



function analyzeFileName(lo_obj:Object):String
{
//オブジェクトのファイル名を取得するメソッド
var name_str:String=lo_obj.contentLoaderInfo.url;
name_str=name_str.slice(name_str.lastIndexOf("/")+1,name_str.length);
return(name_str);


}
posted by 神風記 at 01:00| 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする

2007年11月26日

unload () メソッドでLoaderオブジェクトがロードしたswfを消去する。

Loaderオブジェクトがロードしたデータを消去するunload () メソッドについて解説します。

unload メソッドを使うことLoaderがロードしたデータを消去する事ができます。

例題

Loaderがロードしたswfをunload()メソッドを使って消去。

var my_lo:Loader=new Loader();

my_lo.contentLoaderInfo.addEventListener(Event.COMPLETE,loadHandler)

my_lo.load(new URLRequest("sample.swf"))

var unLoad_tm:Timer=new Timer(1000,0);

unLoad_tm.addEventListener(TimerEvent.TIMER,unloadHandler)

addChild(my_lo)

function loadHandler(evt:Event)
{
trace("ロード完了");

trace("my_lo="+my_lo.content)//[object MainTimeline]

unLoad_tm.start();
}

function unloadHandler(evt:Event)
{
trace("my_loのデータを消去します");

my_lo.unload();

trace("my_lo="+my_lo.content)//null

unLoad_tm.stop();


}

Loaderでロードしたデータが不要になったらすぐにunload()メソッドでデータを消去しておく事をお勧めします。
posted by 神風記 at 01:19| 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする

2007年11月16日

swfのラベル名を取得するcurrentLabels プロパティ について

swfのラベル名を取得するcurrentLabels プロパティ について開設します。

currentLabels:Array [read-only]

currentLabelsプロパティはswfのラベル名をすべて取得する事ができます。取得したラベル名は配列で返します。

ロードした外部swfのラベル名にアクセスするには

loader.content.currentLabels;

loaderがロードした外部SWF内のラベル名を配列でまとめて返してくれます。
posted by 神風記 at 03:32| 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする

2007年11月15日

ロードした外部SWFのラベル名とラベル名のフレーム番号を取得

ロードした外部SWFのラベル名とラベル名のフレーム番号を取得します。

var ef_lo:Loader=new Loader();

var ef_obj:Object;

ef_lo.contentLoaderInfo.addEventListener(Event.COMPLETE,getHandler)

ef_lo.load(new URLRequest("get.swf"));

function getHandler(evt:Event)
{
ef_obj=ef_lo

var my_arr:Array =ef_obj.content.currentLabels;

trace("my_arr="+my_arr[2].frame)
}

後日詳しく記述します。
posted by 神風記 at 08:33| 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする

2007年11月01日

現在のswfのラベル名を調べる。

現在のswfのラベル名を調べます。swfのラベル名はFrameLabel
オブジェクトを使用します。FrameLabelオブジェクトには、フレーム番号や定義されたラベル名を参照するプロパティがあります。

定義されたラベル名はFrameLabel.nameプロパティで参照できます。

name:String [read-only]


例題 swfに定義されたラベル名を取得します。

まず、this.currentLabelsメソッドでステージ中のすべてのラベルを取得し配列に格納します。
for文を使いcurrentLabelsで取得した配列のlengthの数だけ処理をループさせます。
for文内でFrameLabelオブジェクトを生成し、ラベル配列のi番目を代入します。ラベル配列が代入されたオブジェクトのnameプロパティを参照します。
FrameLabel.nameプロパティを参照し、ステージのラベル名を参照していきます。ソースコード | Flashゲーム研究所
posted by 神風記 at 00:00| 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする

2007年10月31日

currentLabelsメソッドでswf内のラベルを配列に格納

currentLabelsメソッドでswf内のラベルを配列に格納します。
currentLabelsメソッドはswfに定義されたラベルを配列に格納する事ができます。

currentLabels:Array [read-only]

例題

現在のswfに定義されたラベル名を配列に格納する。

stop();

trace("this.currentLabels="+this.currentLabels)

これでswfに定義されたラベルがすべて配列に格納されます。ソースコード | Flashゲーム研究所
posted by 神風記 at 02:43| 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする

2007年10月30日

ロードが完了した外部SWFのフレーム数を参照する

totalFramesメソッドを使って外部SWFのフレーム数を参照します。

読み込んだSWFのフレーム数を参照しておくとSWFを制御する際に何かと役に立つので覚えておく事をお勧めします。

例題

Loaderで外部SWFをロードします。
ロードが完了したらオブジェクトを生成し、SWFを読み込んだLoaderを代入します。

オブジェクト.content.totalFrames
で外部SWFのフレーム数を出力します。

ソースコード | Flashゲーム研究所
posted by 神風記 at 05:57| 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする

2007年10月22日

配列に格納したswfを複製する

URLLoaderを使って配列に格納したswfをLoaderに複製します。

一つのURLLoaderが順番にswfをロードします。

URLLoaderのデータフォーマとはバイナリデータに変換しておきます。

ロードが完了したらswfが読み込まれたデータを配列に格納して、残りのswfをロードします。

swfをすべて読み込んだらボタンを押して配列に格納された各swfのデータをLoaderにloadbytesメソッドを使って代入します。
もう一度ボタンを押すと次の配列に格納されたswfがロードされます。

以前ロードされていたswfは画面上から消え、次の配列に格納された新しいswfが表示されます。

この処理を応用するとあらかじめ外部swfをすべて一つの配列に格納して、呼び出したいときにいつでも呼び出す事ができると思います。

Loaderで同じような事をやった場合は、複数のswfをロードし配列に格納しても、一つのswfしか配列から取り出せなかったのですが、この処理だと、URLLoader一つだけで、swfのデータの格納、取り出しが行えるので処理を軽くする事ができると思います。

問題はバイナリデータとして格納するため、配列に格納されたswfの検索が難しい事です。

外部swfの処理はこれからも深く研究していくと思います。


ソースコード | Flashゲーム研究所
posted by 神風記 at 01:00| Comment(0) | TrackBack(0) | 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする

2007年10月21日

ロードした外部swfを複製

ロードした外部swfをコピーします。

コピー元のSWFのデータを格納したオブジェクトはURLLoader

SWFを複製するオブジェクトはLoaderを使います。

URLLoaderのデータフォーマットをバイナリに設定します。
URLLoaderがswfをロードします。
ロードが完了した後のURLLoaderのdataプロパティに格納されているバイナリデータをLoader.loadBytes(URLLoader.data)の処理を行います。

これでLoaderにURLLoaderがロードしたswfをコピーできます。

Flashゲーム制作では外部swfを使用する機会が多いのでこの外部swfをコピーする処理は使いこなすとかなり役に立つと思います。
ソースコード | Flashゲーム研究所
posted by 神風記 at 01:00| Comment(0) | TrackBack(0) | 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする

2007年08月25日

Loaderオブジェクトのcontentプロパティでロードしたswfの変数を参照する

Loaderオブジェクトのcontenプロパティでロードしたswfの変数を参照する事ができます。

Flashゲームを制作する際は外部swfファイルをロードする処理が多くなります。その際にロード元が
ロードしたswfにプレイヤーのステータスやスコアなどの変数を渡したい時などにLoader.contentは役立つと思います。

あらかじめ、Loader.contentへのパスを変数で定義しておく必要があります。
LoaderがloadをCOMPLETEした時にLoader.content.変数名でアクセスするとswfに変数名が記述されていてもエラーが起こります。
これを防ぐにはあらかじめ、Loader.contentのパスを変数で記述しておく必要があります。
var path:Object=Loader.content;と定義した際にLoaderがloadCOMPLETEした際にpath.変数名でアクセスするとエラーが起きずにロードされた
swfに定義した変数を参照できます。

例題はこちらから


続きを読む
posted by 神風記 at 01:00| Comment(0) | TrackBack(0) | 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする

2007年08月17日

loaderオブジェクトがloadしたswfがrootの変数を参照するには

rootにaddChildしたloaderオブジェクトがswfファイルをloadした際にloaderにロードされたswfがrootの変数を参照する方法を解説します。loaderにロードされたswfがrootの変数を参照する処理はFlashゲームを制作する上で使用頻度が高い処理だと思います。


続きを読む
posted by 神風記 at 01:00| Comment(0) | TrackBack(0) | 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする

2007年08月16日

一つ上の階層の変数を参照するには

一つ上の階層に記述された変数を参照する方法

続きを読む
posted by 神風記 at 04:07| Comment(0) | TrackBack(0) | 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする