ActionScript3.0 記憶體釋放問題part1
繼第一篇的教學後,再補上第二篇
在AS3和AS2最大的不同點是
AS2的物件從場景上消失後, 大部份的功能都會被自動移除
這點在AS3則是完全不會被移除
一般同學可能會認為把他removeChild就可以, 但會發現載入越多越lag。
除了要手動把全有的事件都取消, 聲音, 影片等也都要關掉
如果是Flash10的話
Loader物件有個該的方法可以直接使用:
unloadAndStop();
* 聲音已停止。
* 舞台事件偵聽程式已移除。
* enterFrame、frameConstructed、exitFrame、activate 和 deactivate 的事件偵聽程式已移除。
* 計時器已停止。
* Camera 和 Microphone 實體已拆離。
* 影片片段已停止。
這些都會幫你自動的停掉, 相當的方便
繼第一篇的教學後,再補上第二篇
在AS3和AS2最大的不同點是
AS2的物件從場景上消失後, 大部份的功能都會被自動移除
這點在AS3則是完全不會被移除
一般同學可能會認為把他removeChild就可以, 但會發現載入越多越lag。
除了要手動把全有的事件都取消, 聲音, 影片等也都要關掉
如果是Flash10的話
Loader物件有個該的方法可以直接使用:
unloadAndStop();
* 聲音已停止。
* 舞台事件偵聽程式已移除。
* enterFrame、frameConstructed、exitFrame、activate 和 deactivate 的事件偵聽程式已移除。
* 計時器已停止。
* Camera 和 Microphone 實體已拆離。
* 影片片段已停止。
這些都會幫你自動的停掉, 相當的方便
留言
難怪每次都越跑越慢
目前找不到解答,也找不到這奇妙的相關性。
當用uloadandstop()時,好像會讓flash player繪圖引擎錯亂,畫面會變的很奇怪。
這情況會出現在用mask快取點陣圖上。
不知道奶伯有遇到嗎?
你的問題我倒是沒遇到過
結果在選項之間切換個三次就慢到不行囉。
但是又苦於作品不是我製作,是由其他人提供,沒法確保他們一定會把所有事件給清乾淨。現在看到這個方法‧又燃起了一線希望.........^^~
現在好像沒了~只有unload和其他不知名的功能~~
請問物件設為null後,物件內new出的物件是否為null?
寫了一個測試類別:
package {
public class Test {
private var testArr:Array;
public function Test() {
testArr=new array(1, 2, 3, 4, 5);
}
}
}
文件類別:
package {
import flash.display.MovieClip;
public class Main extends MovieClip {
public function Main() {
var test:Test=new Test();//在這裡new一個Test物件,建構時物件裡會new一個陣列
test=null;//在這裡設定test為null,等待gc回收,那物件內部new出的物件是否也為null??
//若非null該如何處理此處的記憶體管理??
}
}
}
感謝任何的回覆、解答。
package {
public class Test {
private var testArr:Array;
public function Test() {
testArr=new array(1, 2, 3, 4, 5);
}
public function destroy():void{
testArr = null;
}
}
}
文件類別:
package {
import flash.display.MovieClip;
public class Main extends MovieClip {
public function Main() {
var test:Test=new Test();
test.destroy();
//宣告在function裡的變數, 就不用設成null, 除非還有指派
}
}
}
我該怎麼將它關閉呢?
當被移掉時,就把 Video Close掉即可