在Flash開發之中,如果我們要移除一個MovieClip其實可以呼叫「MovieClip.unloadMovie()」或「MovieClip.removeMovieClip()」,雖然這兩個Method用起來感覺似乎差異不大,但其實骨子裡可是有相當多的細節要注意的~
呼叫「MovieClip.removeMovieClip()」之前,請先改變「depth」
假設我們在Stage上用「Rectangle Tool」建立一個正方形的MovieClip,然後試著呼叫程式一或程式二來移除~
程式一
on(release) { this.unloadMovie(); }
程式二
on(release) { this.removeMovieClip(); }
我們可以發現程式二居然無法移除MovieClip,這是因為呼叫「MovieClip.removeMovieClip()」的時候,這個MovieClip的「depth」必須要為「正數」才能移除,換句話說~我們必須先呼叫「MovieClip.swapDepths()」Method,將「depth」的值改為「正數」然後再呼叫「MovieClip.removeMovieClip()」即可,如程式三。
程式三
on(release) { this.swapDepths(0); this.removeMovieClip(); }
所以若是透過「MovieClip.createEmptyMovieClip()」Method來建立MovieClip的話,就注意第二個參數「depth」值,即可避免這樣的問題,例如:採用「getNextHighestDepth()」來決定「depth」值,因為此Method所傳回的值必為0或更大的值。
P.S. 「MovieClip.unloadMovie()」較適合用「清除」來解釋之
加戴和移除是不是不能同一個??
例如我按鈕有a b c
當我點a時,載入11.swf,點b時,載入22.swf,點c時,載入33.swf
一般來說會一直蓋上去也就是說從a~c時,載入就是11.swf+22.swf+33.swf
雖然可以讀取,但是是不是這樣蓋上去的swf會容易出錯??
那我又要怎麼移掉??
b1_btn.onPress=function (){
loadMovie("11.swf", mcBox);
}
b2_btn.onPress=function (){
loadMovie("22.swf", mcBox);
mcBox.unloadMovie()
}
這樣寫??
2014-04-08 13:03:32
Mai 您好~ 不專業的路過,回答一下你的問題,以下方式,你在嘗試一下喔~
你的例子應該在寫一個 function,來消除前面呼叫的 loadMovie();
function delMc()
{
mcBox.swapDepths(0);
mcBox.unloadMovie();
}
b1_btn.onPress=function (){
delMc();
loadMovie("11.swf", mcBox);
}
b2_btn.onPress=function (){
delMc();
loadMovie("22.swf", mcBox);
}
2022-03-08 18:12:09