- ベストアンサー
外部ファイルを読み込んだMCをドラッグ&ドロップしたい方法
- flash(swf)で外部ファイルを読み込んだムービークリップ(MC)をドラッグ&ドロップで移動できる方法について教えてください。
- 通常のライブラリなどに登録して表示させているMCはドラッグ&ドロップで移動することができますが、外部ファイルを読み込んだMCでは同じ方法をしても移動できません。
- どのようにすれば外部ファイルを読み込んだMCをドラッグ&ドロップで移動できるようにすることができるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まず原因から。 photoF.loadMovie("test.jpg"); で外部 「test.jpg」 が photoF に読み込まれることによって, photoF のタイムラインは 「test.jpg」 に乗っ取られてしまします。 そのときに, photoF 内の変数やプロパティや外部から定義したイベントハンドラメソッドはクリアされます。 それが, photoF.onPress = function(){} などが消えてしまう原因です。 コードのみを見た場合, photoF.loadMovie("test.jpg"); ↓ photoF.onPress = function(){} photoF.onRelease = function(){} photoF.onReleaseOutside = function(){} のように,読み込んだ後にイベントハンドラメソッドを定義しているように見えますが, 現実問題,ロードには時間がかかりますから次のようになります。 photoF.loadMovie("test.jpg"); ↓ photoF.onPress = function(){} photoF.onRelease = function(){} photoF.onReleaseOutside = function(){} ↓ ずっと後 ↓ 「test.jpg」がロードされる(このときイベントハンドラメソッドが消える) という流れになります。 次に対処方法です。 対処法はいくつもあるのですが, 次の2つが多いような気がします。 ◎対処法1 photoF の中に 子ムービークリップを作成して, その子ムービークリップに外部JPEGを読み込む。 この方法を使うと, photoF 内の 子ムービークリップ内のタイムラインが乗っ取られるだけですから, photoF に定義したイベントハンドラメソッドは消えません。 ◎対処法2 MovieClip.loadMovie で外部JPEGを読み込むのではなく, MovieClipLoader.loadClip で外部JPEGをロードし, リスナーオブジェクト.onLoadInit のタイミングで, photoF に イベントハンドラメソッド を定義する この方法を使うと, 外部JPEGが photoF を乗っ取った後に イベントハンドラメソッド を定義できるので大丈夫です。
お礼
回答ありがとうございます。 原因がはっきり分かりました。 後々に実現したい機能を考えると、対処法2の方法で 実装するのがよさそうです。