看板 Flash 關於我們 聯絡資訊
最近做了一個flash圖像聊天室 發現當人數多時 有時會偶然性的發生錯誤 會有"影片中有一個Flash Player會讓執行速度變慢..." 的警語出現 通常這是在我單機測試時 寫出無限迴圈才會出現的糟糕物= = 不知道是發生了什麼嚴重問題所以變這樣..(嗚..我是嫩咖) 但是一般測試只要人數在一般狀況 其實出現這樣錯誤訊息的次數現階段還不多 聊天室可以執行很久都以正常狀況存在著.. 所以想問一下下列指令吃記憶體程度 onMouseOver、onMouseOut、onPress 這幾個指令是否會很吃資源呢? 他們有反應 當速度變慢時 打字會變很慢 我在想 這問題可能是我設了按鍵監聽?(為了讓他們按enter可以自動發話) 想問一下 設定按鍵監聽會是一件很吃資源的事嗎? 還有...我在有些函數裡面 有建立變數 不知道是否當這函數結束後 由函數產生的變數會自己消失 還是說會一直存在著占記憶體?所以時間久了會自動變糟糕...? 想問問有做過flash聊天室的人 有什麼關於lag要注意的事項嗎? 在做之前其實已經規劃了很多了 但是完成後還是有許多lag問題 可能是因為我們背景與人偶娃娃用了許多動畫 有關於上述的錯誤訊息 代表著怎樣的狀況呢? 是否慢慢的占用記憶體也會產生 或是突然的無窮迴圈會發生這樣的問題呢? 發生此錯誤訊息的電腦系統為vista 我自己本身還沒有遇到過...(我用xp) 不知道是否有知道有什麼與flash相關的教學文章嗎>_< 感恩不盡喔!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.67.95.137
cjcat2266:Flash管理記憶體的方式是garbage collector 11/08 00:08
cjcat2266:Google一下可以查到GC的運作機制 11/08 00:08
cjcat2266:簡單來說,當有一個物件你不需要使用的時候 11/08 00:08
cjcat2266:可以讓裝載它reference的變數值為null 11/08 00:08
cjcat2266:當一個物件不再被任何一個變數裝載refernce的時候 11/08 00:09
cjcat2266:GC就會在需要記憶體的時候去把該物件從記憶體上消除掉 11/08 00:09
cjcat2266:因為它再也沒有辦法被存取到,所以它佔用著記憶體 11/08 00:10
cjcat2266:至於你說的function裡面宣告變數,這叫local variable 11/08 00:10
cjcat2266:一離開function之後該變數就不見了 11/08 00:11
cjcat2266:如果該變數是某個物件唯一的reference 11/08 00:11
cjcat2266:那該物件也會在適當時機被GC處理掉 11/08 00:11
cochiachang:因為我聊天室存取人數是使用二維陣列 全域一維 11/08 00:12
cjcat2266:當你畫面上的視覺元素不需要的時候,記得把它remove掉 11/08 00:13
cjcat2266:不然光是alpha = 0或者visible = false還是有佔用記憶體 11/08 00:13
cjcat2266:然後就是那些event listener是event發生才會被呼叫 11/08 00:14
cjcat2266:定義好之後沒有事件發生不會消耗資源,不用擔心 11/08 00:14
cochiachang:也全域二維 用迴圈產生二維 那這樣執行完這個會刪掉嗎 11/08 00:15
cjcat2266:全域變數不會自動被刪掉,不需要的時候需要你自己delete 11/08 00:15
cochiachang:我說錯了 是local= =名稱搞錯 我想到錯亂抱歉 11/08 00:15
cochiachang:很謝謝你 我去查一下garbage collector的運作 11/08 00:16
pm2001:CPU太廢也會出現這個訊息 11/08 00:18