mieki256's diary



2005/11/24(木) [n年前の日記]

#3 [flash] loadMovie() で表示したjpgやswfは duplicateMovieClip()で複製できない

自分、完全に考え違いをしてた。loadMovie() で読み込んだムービークリップも複製できるものとばかり思い込んでたわけで。トホ。なんでもかんでも外部swfにして、最初に読み込んで、必要になったら複製すれば問題ないや、と思ってたけど全然甘かった。

ライブラリの中のムービークリップを attachMovie() してタイムラインに置くにしても、あるいは、タイムライン上に既に存在するムービークリップを duplicateMovieClip() するにしても、どうやらリンケージ云々なるものが絡んでるらしく。loadMovie() で読んだswf等にはそれがない or ロードした時点で消滅するから、それでおそらく複製等はできないのだろう。たぶん。

さて、仮に、外部から読みたい jpg or swf が大量にあった場合、どうしたもんか。思いつく解決策は2つ。 前者は論外だよなぁ…。たとえば256枚の画像があったら、256回、「ファイルを開く」ダイアログを開いて、256回、手打ちで、連番リンケージ名をつけていかなければならない。無理。後で「やっぱり画像を差し替えようかなー」なんてことになったら、もう大変。

ということで、そういう場面では後者の方法でやるしかないんだろうなと想像したり。検索してみたけど、大体そういう方向に話は流れていくみたいだし。

loadMovie() に関して夢想 :

ファイル数が増えた場合、容量的にはたいしたことがなくても、逐一外部から読み込もうとするだろうから反応が遅くなるだろうと。それを考えると、何かしら、まとまった状態で読めたほうがいいのかもしれない。

巨大な画像を読み込んで、マスクを使って一部分だけ表示するとか。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で消せ! :


以上です。

過去ログ表示

Prev - 2005/11 - Next
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project