BINARYでloadしたSWFとかをClassに割り振れないのか? [ Flash ]
なんか方法ありそうな気がするのだけど、うまくいかないので書いてみる。
以下のようにbinaryでLoadするとして,
これをMovieClipとして利用するのにはEvent.COMPLETEでバイナリを格納。(実際使っているときはバイナリ管理のクラスをつかってますが) で、実際addChildする際には っつー感じなのですが、これをたとえば"ahoaho"クラスとかに割り振って とかでインスタンス化できるようにできんのか?っつーこと。いや別にloader使ってaddChildでもいいのだけどさー。
なんか出来そうな気がするのだけど、うまく割り当てが出来ない。
追記:08/04/10 12:41:42
・registerClassAliasっつーのはなんか意味が良く分からないな・・。
・package外でdynamic class ahoaho { };とかやった場合
ahoaho.prototype.constructor = _bytes;
とかは駄目・・・。
当然
ahoaho = _bytes
も駄目っぽい。
無理なのかしらね?
っつーかconstructorじゃない気がするな・・・。そもそもByteArrayをそこに割り当てるのが間違っているような・・。この辺基礎がないから良く分からないな。もちっとやってみよっと。14時まで・・・
ちと何がやりたいか良く分からないので整理。
たとえばObjectとかを一度ByteArrayにして復活させるときにはこんな感じ。
追記:08/04/10 13:56:46
うーん、駄目だなー。
あれか?readObjectじゃなくてreadClass見たいなのがいるのか?
ちなみにManipulating individual pixels -- Flash CS3の
をvar bytes:ByteArray = new ByteArray();
bytes.writeObject(bitmapDataObject1);
bytes.position = 0;
bitmapDataObject2 = bytes.readObject();って訳にはいかないらしい。
writeObject、readObjectの対象が良く分かってないな・・・汗

コメント
僕はよくロードしたSWFをスキンライブラリ的に使ってるのですが、
loader.contentLoaderInfo.applicationDomain.getDefiniation("クラス名");
で、ロードしたSWF内で定義したリンケージクラスを引っ張ってこれます。
やったことありませんが、これでロードしたswfのルートドキュメントのクラスが取得できれば解決しそうな予感が。
投稿者: fladdict | April 10, 2008 3:13 PM
あ、そですね。これはオデも良くやっていて、クラス定義してれば操作できるですが、クラス定義してないswfとかイメージとかをクラス化できないのかなーって。(まぁ画像の場合はbitmapdataで取り回したほうが便利ですが)
>やったことありませんが、これでロードしたswfのルートドキュメントのクラスが取得できれば解決しそうな予感が。
あ、これはオデもやったことがないです。取れるのかな?
後でやってみよっと。
投稿者: +39 | April 10, 2008 5:17 PM
こんにちは。
一応、以下のような感じでnewできました。
//ロードされたMC
var mc:MovieClip = loader.content as MovieClip;
//ロードされたMCのクラス名
var className:String = getQualifiedClassName(mc);
//ロードされたMCのクラス
var classRef:Class = mc.loaderInfo.applicationDomain.getDefinition(className) as Class;
//newして複製
addChild(new classRef());
ただ、たまにプレイヤーがクラッシュしてしまう気がします。
あんまり突っ込んでないので気のせいかもしれません。。
投稿者: imajuk | November 4, 2008 6:32 PM
おお!なるほど!
クラスはそれ自体ではないということですね・・。なるほど・・。
ちょっと後日試してみます。
>ただ、たまにプレイヤーがクラッシュしてしまう気がします。
これは・・怖いですね・・・。
プレイヤーが固まってしまう感じですか?
投稿者: +39 | November 4, 2008 6:52 PM