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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     unloadMovieとremoveMovieClipの違い
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
テライユタカ
Åê¹ÆNo.28764
投稿日時: 2006-9-17 12:20
常連
居住地: わかやま
投稿: 88
使用環境:
iMac G5 10.4.9 + iBook G4 10.3.9 + Flash8
unloadMovieとremoveMovieClipの違い
ふと気になりだし、どうしてもわからないことがあります。

ライブラリ内に「a」というリンケージ識別子のMC、ステージ上にsw1,sw2,sw3のMCを用意します。

【sw1】MC配置用
on (release) {
_root.attachMovie("a", "a", 1);
}

【sw2】MC削除用
on (release) {
_root.a.unloadMovie();
}

【sw3】MC削除用
on (release) {
_root.a.removeMovieClip();
}

上記のASでsw1で配置され、sw2・sw3どちらでも削除されます。
しかしsw2とsw3どう違うのでしょうか?どちらを使用する方がメリットあるのでしょうか?
どちらでも期待通りの動きはしているように思うのです。

ご存知の方、よろしくお願いいたします。


----------------
TERAI YUTAKA
HomePage: SITE ALPHA

野中文雄
Åê¹ÆNo.28766
投稿日時: 2006-9-17 12:36
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: unloadMovieとremoveMovieClipの違い
後でまだインスタンスを使う予定があれば(たとえば、MovieClip.loadMovie()メソッドのターゲットにする場合など)MovieClip.unloadMovie()メソッドを用い、もう不要ならMovieClip.removeMovieClip()メソッドで完全に削除すればよいのではないでしょうか。
var _mc:MovieClip = _root.createEmptyMovieClip("a", 1);
_mc._x = 100;
_mc.myVar = 1;
trace([_mc, _mc._x, _mc.myVar]);  出力: _level0.a,100,1
_mc.unloadMovie();
trace([_mc, _mc._x, _mc.myVar]);  出力: _level0.a,100,1
_mc.removeMovieClip();
trace([_mc, _mc._x, _mc.myVar]);  出力: ,undefined,undefined
_mc._x = 200;
_mc.myVar = 2;
trace([_mc, _mc._x, _mc.myVar]);  出力: ,undefined,undefined


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

テライユタカ
Åê¹ÆNo.28768
投稿日時: 2006-9-17 13:13
常連
居住地: わかやま
投稿: 88
使用環境:
iMac G5 10.4.9 + iBook G4 10.3.9 + Flash8
Re: unloadMovieとremoveMovieClipの違い
野中様、速攻のご回答ありがとうございます。

引用:
後でまだインスタンスを使う予定があれば(たとえば、MovieClip.loadMovie()メソッドのターゲットにする場合など)MovieClip.unloadMovie()メソッドを用い、もう不要ならMovieClip.removeMovieClip()メソッドで完全に削除すればよいのではないでしょうか。

なるほど。違いはわかりました。
そうなると、今製作中のASではunloadMovieを使った方が良いものと、removeMovieClipを使った方が良いものと、混在してきます。
現在はすべてUnloadMovieで制作中(全てunloadMovie>全てremoveMovieClip)なんですが、全てunloadMovieでコーディングするデメリットってあるのでしょうか?(完全に削除するメリットは?メモリの関係とか?)
正直でメリットがないなら、このままでもいいと思うのです。

ご存知なら教えてください。


----------------
TERAI YUTAKA
HomePage: SITE ALPHA

野中文雄
Åê¹ÆNo.28769
投稿日時: 2006-9-17 14:15
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: unloadMovieとremoveMovieClipの違い
MovieClip.unloadMovie()メソッドでコンテンツを消去しても、設定した変数[修正: プロパティの一部]などは残ります。理屈上厳密にいえば、無駄にメモリが消費される可能性はあるでしょう。

実際上は、不要なインスタンスは、後でうっかり足をすくわれないよう、削除するのがプログラミング上よい習慣といえます。うっかりする可能性さえなければ、実質的に問題はないと思います。
var nDepth:Number = 0;
var my0_mc:MovieClip = _root.createEmptyMovieClip("a", ++nDepth);
my0_mc._x = 100;
my0_mc.unloadMovie();
var my1_mc:MovieClip = _root.createEmptyMovieClip("a", ++nDepth);
my1_mc._x = 200;
this.a._x = 300;
trace([my0_mc._x, my1_mc._x, this.a._x]);  // 出力: 300,200,300

[変数のリストアップ]より引用:
変数 _level0.my0_mc = [ムービークリップ:_level0.a]
変数 _level0.my1_mc = [ムービークリップ:_level0.a]
ムービークリップ: ターゲット="_level0.a"
ムービークリップ: ターゲット="_level0.a"

引用:
テライユタカさんは書きました:
現在はすべてUnloadMovieで制作中(全てunloadMovie>全てremoveMovieClip)なんですが、全てunloadMovieでコーディングするデメリットってあるのでしょうか?(完全に削除するメリットは?メモリの関係とか?)

[追記] 設定した変数やプロパティの去就は、MovieClip.onUnloadイベントの発生後に確認する必要がありました。

ユーザー定義の変数(プロパティ)は、基本的にクリアされます。MovieClipに定義済みのプロパティについては、設定が残るもの、リセットされるもの、クリアされるものなどに分かれるようです。おそらく、MovieClip.loadMovie()メソッドにより外部ファイルを読込んだ場合とパラレルな結果になるものと推測されます。
var _mc:MovieClip = _root.createEmptyMovieClip("a", 1);
_mc.onUnload = function() {
	trace(["onUnload", _mc, _mc._x, _mc.myVar, _mc._visible]);
	// 出力: onUnload,_level0.a,100,1,false
	onEnterFrame = function () {
		trace(["onEnterFrame", _mc, _mc._x, _mc.myVar, _mc._visible]);
		// 出力: onEnterFrame,_level0.a,100,undefined,true
		delete onEnterFrame;
	};
};
_mc._x = 100;
_mc.myVar = 1;
_mc._visible = false;
trace([_mc, _mc._x, _mc.myVar, _mc._visible]);  // 出力: _level0.a,100,1,false
_mc.unloadMovie();


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

テライユタカ
Åê¹ÆNo.28788
投稿日時: 2006-9-17 23:20
常連
居住地: わかやま
投稿: 88
使用環境:
iMac G5 10.4.9 + iBook G4 10.3.9 + Flash8
Re: unloadMovieとremoveMovieClipの違い
なるほど。
野中様ありがとうございました。
今後は使い分けるようにしたいと思います。


----------------
TERAI YUTAKA
HomePage: SITE ALPHA

Fla4man
Åê¹ÆNo.28793
投稿日時: 2006-9-18 1:59
職人
居住地: かまくら
投稿: 517
使用環境:
WinMe,Win2000,
Flash4,アズさん,大仏、delphi
Re: unloadMovieとremoveMovieClipの違い
unloadしたあと再度変数にアクセスしてみてください。

unloadMovie命令の直後には変数は残っていますが
そのフレームが終了した後にはなくなっているはずです。

つまり違いは命令直後に参照できるかできないかで
メモリー上からの削除自体についてはどちらもほぼ同じタイミングと見ていいでしょう。

このケースは「うまくデバッグするための視点」という意味で学ぶべき点が多いと思います。


----------------
通常のハンドル名:×○○× ねた回収モードに突入 現在1/100

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

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