トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     Re: loadMovieとattachMovieについて(was:duplicateMovieClipについて[from: 迷える子羊の部屋])
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
野中文雄
Åê¹ÆNo.13662
投稿日時: 2004-12-26 13:47
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: loadMovieとattachMovieについて(was:duplicateMovieClipについて[from: 迷える子羊の部屋])
迷える子羊の部屋のスレッドから、移行しました。

[ML過去ログ]の「attachMovieとloadMovie」で、議論された問題ではないでしょうか。リンケージ識別子は、どうもSWFと関連づけられているようです。ですから、逆に外部SWFのMovieClipシンボルを(共有ライブラリの設定をして)、MovieClip.attachMovie()メソッドで配置しようとしてもできません
引用:
salvoxさんは書きました:
----------------------------------------
createEmptyMovieClipで空を生成

そいつに、loadMovieでJPEGをロード後

そいつに、静的に作成済みのMCをattachMovie

attachMovieの戻り値を得る

undefined

MovieClip.createMovieClip()メソッドも、問題の要件には含まれません。空のMovieClipインスタンスmy_mcをタイムラインに配置して、試してみました。
// タイムライン: _root
// フレームアクション
// MovieClipインスタンス_root.my_mcを配置
// 読込み元SWFとtest.swfの両方に異なるリンケージシンボル"mySymbol"を設定
// this.attachMovie("mySymbol", "child_mc", 1);  // 確認用
my_mc.loadMovie("test.swf");
this.onMouseUp = function() {
    var _mc = my_mc.attachMovie("mySymbol", "child_mc", 1);
    trace(_mc);
};

[ムービープレビュー]を行って、ステージをクリックすると、MovieClipインスタンスmy_mc内に、ロードされたtest.swf内に設定してあるリンケージシンボル"mySymbol"が配置されます。

以下のご説明は、一瞬疑問でした。ロードした外部JPEGの中に、どうやってMovieClipシンボルを複製するのだろうと。この場合には、外部SWFをロードされているのですよね。また、MovieClip.createTextField()メソッドには、MX 2004でもいまだ戻り値がありません(おそらく実際には、戻り値を確認されている訳ではないと思いますが)。
引用:
アタッチの変わりに、emptyMovieClipやっても、
duplicateやっても、createTextやってもちゃんと
戻り値は返ってくるし、this[生成したインスタンス名]でやっても、問題なく動作する。


----------------
 

salvox
Åê¹ÆNo.13665
投稿日時: 2004-12-26 17:10
常連
居住地: 東京都
投稿: 73
使用環境:
Windows2000
FlashMX
テキストエディター:EmEditor
Re: loadMovieとattachMovieについて(was:duplicateMovieClipについて[from: 迷える子羊の部屋])
すいません。僕の書き方が良くなかったようです(-- ;)。
さらに、2,3ウソっぱちいってます。ごめんなさい。
ウソを認めます。

私が書きました引用:
duplicateやっても、createTextやってもちゃんと戻り値は返ってくるし、this[生成したインスタンス名]

おっしゃる通り、createTextField()は、戻り値を取らないので、この場合は、後者のthis[生成したインスタンス名]で制御しています。

それと、
引用:
ロードした外部JPEGの中に、どうやってMovieClipシンボルを複製

推測、ありがとうございますm(_ _)m おっしゃる通り!!

私がウソつきました。実はこんなことやってません!!
やろうとしたのですが、よくよく考えると不可能(面倒)なことに気づいてやんなかったんだ。ごめんなさい。

さらに、もう一個ウソついてます。

私が書きました:引用:
で、調べた結果、ど?も最初のcreateEmptyMovieClipが癖もんらいしい。これをattachとかdupにかえると動作する


ウソです!! 正しくは、attachに変えても動作しません!!
duplicateMovieClipに関しては、(自前)ImgLoaderクラスの構造上、適応が面倒くさかったのでやってません。むしろ、duplicateMovieClipは、同階層上にしかMCを複製できない為、
(自前)ImgLoaderクラスの仕様に適さなかったんです。

で、結論ですが、
以上の私のウソを含めて、つじつまを合わせると、
createMovieClipが悪いのではなく、attachMovieが問題、むしろLoadMovieが問題というところに行き当たるわけです。

つまり、

野中さんの書き込み:引用:
リンケージ識別子は、どうもSWFと関連づけられているようです

当たりです。場数の違いですね。なるほど理解!

つまり、LoadMovieでJpegを読み込んだ時点でMCが初期化されて、元swfの情報を引き継げず、リンケージ識別子を参照できなかったからなんですね。納得!

そうですよね。
FlashMXのクラス構造上、クラスのprototypeに設定してある関数が呼び出せないことはあり得ないし(※注)、しかもネイティブ関数だし。だから、attachMovieのリファレンスを渡したところで結果同じなわけで(これは予想の範囲だった、つじつまはあう)・・・
(※注 特殊な構造、記述間違いは除きます。)

ありがとうございましたm(_ _)m
今回の場合、attachしなきゃいけないのが『new!!』というテキストのアイコンだったのでcreateTextField()等で誤魔化しましたが、グラフィックだったら、人間辞めてるところでした(構造を一から作り直し)。


----------------
(C)SalvoxStudioStation

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops