我有一個的Adobe Flash 10的程序,在某些情況下凍結,但只有在Flash播放器的發佈版本中運行時。使用調試版本,應用程序可以正常工作。調試版本只閃問題
什麼是調試此類問題的最佳方法?我考慮在我的電腦上安裝release player,並試圖設置某種非圖形化的輸出方式(我猜有些方法可以編寫日誌文件或類似的東西?),但是我看不出有什麼方法可以同時發佈和發佈反正安裝調試版本:(
編輯:好的,我成功地取代我的版本的Flash播放器的發佈版本,並沒有凍結的......所以我知道到目前爲止是什麼:
Flash: Debug Release
Vista 32: works works
XP PRO 32: works* freeze
- 我給他們調試的球員,我不得不測試這個
嗯,看起來越來越不像我的代碼中的錯誤,更像是播放器中的錯誤(在所有情況下爲10.0.45.2)......至少id喜歡在它停下來的時候看到callstack。有沒有辦法做到這一點,而不要求他們安裝各種零件,例如通過讓閃存寫出一個log.txt或類似於函數的「跟蹤」功能,我可以在代碼中插入問題?
EDIT2:我只是給了SWF到另一個人用XP 32位,同樣的結果:(
EDIT3: 好,通過廣泛使用flash.external.ExternalInterface.call的( 「警報」,」 .. 「);我設法找到導致問題的確切線(我還改進了異常處理代碼,而不是凍結它告訴我有一個」未處理「的異常)。現在的問題是地球上閃爍的問題在某些機器上釋放播放器...
particles.push(p);
在所述平臺上導致TypeError#1034。Particles is a Vecto河< Particle>,p是一個粒子。我的getQualifiedClassName測試,並得到:
的getQualifiedClassName(P)= ::粒子
的getQualifiedClassName(顆粒)= __AS3 __ VEC ::向量。 < ::粒子>
任何想法,爲什麼這是一個問題,以及如何使它工作?
EDIT4:
好,我似乎已經解決了這個。 Particle類只是一個簡單的內部類,它位於操作腳本文件中的包{...}後面,使用它。我把它移到它自己的文件(particle.as)中,並在我的包中成爲一個適當的公共類,並解決了問題。
也許它是一個閃存錯誤,或者我錯過了有關不使用內部類的向量或東西的備忘錄,但如果是這樣的話,我會預期的東西或其他(無論是在編譯時或調試運行時)禁止它明確地,例如「私人變量粒子:Vector。< Particle>;」中的一些錯誤線。如果我有機會,我想我會看看聯繫Adobe Flash團隊關於這個或什麼。
感謝您的幫助給調試技巧我的猜測是沿原線路問題:)
嗯,我知道什麼時候在什麼樣的用戶與應用程序做的條款凍結,其當按下某個按鈕,但我不知道在哪裏的代碼凍結,看着我的代碼不能看到它應該做的任何理由(它所做的一切就是創建一些對象,設置一些變量並在刪除舊的Sprite時添加一個新的子對象),基本上所有的代碼都已經運行正常在應用程序中取得這麼大的進展...在代碼中甚至沒有任何循環可以讓它陷入...... – 2010-06-07 16:29:02
我會看看那個調試器。它是否能夠成功地從Flash插件的發佈版本獲取信息,因爲obv在我的機器上使用調試版本,我擁有Flash Builder調試器,但正如我所說的,它在那裏工作正常。 – 2010-06-07 16:30:37
是的,它可以與插件的發行版一起使用,但不如FB調試器強大。它只能與暴露於初始化它的範圍的屬性一起使用。 – 2010-06-07 16:41:26