2005/11/24(木) [n年前の日記]
#3 [flash] loadMovie() で表示したjpgやswfは duplicateMovieClip()で複製できない
自分、完全に考え違いをしてた。loadMovie() で読み込んだムービークリップも複製できるものとばかり思い込んでたわけで。トホ。なんでもかんでも外部swfにして、最初に読み込んで、必要になったら複製すれば問題ないや、と思ってたけど全然甘かった。
ライブラリの中のムービークリップを attachMovie() してタイムラインに置くにしても、あるいは、タイムライン上に既に存在するムービークリップを duplicateMovieClip() するにしても、どうやらリンケージ云々なるものが絡んでるらしく。loadMovie() で読んだswf等にはそれがない or ロードした時点で消滅するから、それでおそらく複製等はできないのだろう。たぶん。
さて、仮に、外部から読みたい jpg or swf が大量にあった場合、どうしたもんか。思いつく解決策は2つ。
ということで、そういう場面では後者の方法でやるしかないんだろうなと想像したり。検索してみたけど、大体そういう方向に話は流れていくみたいだし。
ライブラリの中のムービークリップを attachMovie() してタイムラインに置くにしても、あるいは、タイムライン上に既に存在するムービークリップを duplicateMovieClip() するにしても、どうやらリンケージ云々なるものが絡んでるらしく。loadMovie() で読んだswf等にはそれがない or ロードした時点で消滅するから、それでおそらく複製等はできないのだろう。たぶん。
さて、仮に、外部から読みたい jpg or swf が大量にあった場合、どうしたもんか。思いつく解決策は2つ。
- 手作業で、一つ一つの画像を本体swfに読み込んで、ライブラリに登録・連番リンケージ名とやらを手打ちで指定していく。
- 一度読み込めばキャッシュとやらが利いてくれているだろうから、二度目以降はそんなに待たされないことをほのかに期待して、必要になるたびに、その都度、loadMovie() する。
ということで、そういう場面では後者の方法でやるしかないんだろうなと想像したり。検索してみたけど、大体そういう方向に話は流れていくみたいだし。
◎ loadMovie() に関して夢想 :
ファイル数が増えた場合、容量的にはたいしたことがなくても、逐一外部から読み込もうとするだろうから反応が遅くなるだろうと。それを考えると、何かしら、まとまった状態で読めたほうがいいのかもしれない。
巨大な画像を読み込んで、マスクを使って一部分だけ表示するとか。1フレーム1画像になってるswfムービーを読んで、本体swfから特定のフレームを指定して表示させるとか。
と思ったけれど、画面上で必要になるたびに、その巨大な、あるいは、やたらと長い、swfを読むわけにもいかない。万が一、キャッシュが利かなかったら大変なことに。
上手い方法は思いつかないなぁ…。
巨大な画像を読み込んで、マスクを使って一部分だけ表示するとか。1フレーム1画像になってるswfムービーを読んで、本体swfから特定のフレームを指定して表示させるとか。
と思ったけれど、画面上で必要になるたびに、その巨大な、あるいは、やたらと長い、swfを読むわけにもいかない。万が一、キャッシュが利かなかったら大変なことに。
上手い方法は思いつかないなぁ…。
◎ Flash Creator 1.6 は onEnterFrame を delete で消せない? :
本来なら、
仕方ないので、本当は推奨されないらしいのだけど、
mc.onEnterFrame = function () { delete this.onEnterFrame; }といった書き方ができるらしい のだけど。上手くいかない。いつまでも onEnterFrame が処理を続けてしまう。これまた Flash Creator の仕様 or バグかしら。海外の掲示板を覗いた限りでは、 _できるような感じで書かれてる ようなそうでもないような、うーん。
仕方ないので、本当は推奨されないらしいのだけど、
this.onEnterFrame = null;で代用。
◎ _F-site | イベントハンドラメソッドはdeleteで消せ! :
[ ツッコむ ]
以上です。