2011-11-14 59 views
2

我想知道是否有方法爲AS3中的#1502執行時間錯誤添加錯誤處理程序。如何在AS3中處理執行時間錯誤(錯誤#1502)

有兩點要注意:

  • 我知道最大腳本執行時間可在發佈選項進行設置。它取值高達16位(0-65535)。所以最多有18個小時。在我使用它的上下文中,該腳本在60秒後不會終止。

  • 我在用mProjector構建的應用程序中使用它。在打開文件瀏覽器對話的按鈕上有一個事件監聽器。只要瀏覽器打開,事件處理程序不會繼續。如果超過了最大腳本執行時間,我會得到#1502。

  • 如果沒有辦法,我會設置這個限制非常高。儘管如此,如果你像一天一樣開放對話,那麼構建一個會破壞的東西並不是一個整潔的東西。它永遠不會發生,但我仍然想知道是否有適當的方法來避免這樣的事情。

謝謝。

附加信息:

縮短代碼:

bttn.addEventListener(MouseEvent.CLICK, browse); 
function browse(e:Event) { 
    var selectedFilesString:String = mSystem.chooseFiles(chooseFileTitle, initFileName, initFolderName, fileFilter, defaultFileType); 
    ... 
} 

所以這涉及到()這裏詳述方法mSystem.chooseFiles:

http://www.screentime.com/software/flash-projector/docs/AS3-mSys-chooseFiles.htm

但是就像我說我對這個錯誤有一個錯誤處理程序感興趣。沒有什麼可能導致它與自己無關或閹mProjector被很好地落實與否等

回答

2

編輯

你能趕上ScriptTimeoutError,但只有一次。見this blog post

+0

我試圖通過上面的註釋來避免這種回答。我真的處於發生超時的情況。不過謝謝。 –

+0

從它們的API(它確實不使用事件處理來防止這種錯誤)來判斷,在我看來,您應該聯繫mProjector組件的開發人員 - 這顯然是一個設計缺陷。無論如何,我已經編輯了我的答案。 – weltraumpirat

+0

感謝您的鏈接。那很有意思。你得到的太糟糕了,但有一次抓住了這一點。 –

0

在調用FileReference.browse()之前,您可以嘗試啓動計時器,如果計時器完成而沒有瀏覽操作完成調用FileReference.cancel()

+0

我沒有使用FileReference類,但謝謝。 –

1

我有使用Zinc將我的應用程序包裝到.EXE中的類似問題,其中基本上腳本在等待用戶觸發將被觸發回操作腳本的事件時超時。實際上,這是一個確認對話框,可能與您遇到的情況完全相同,只是使用不同的外部接口/包裝器。

隨着最新版本的鋅,他們已承諾解決這種類型的問題,但在你的情況下,我會看看mProjector是否有任何異步對話框調用,不會停止動作腳本,或甚至設置爲幾秒鐘後關閉對話框。

如果沒有,那麼你要麼將超時設置爲可笑,這感覺非常混亂,我同意;但是,你將它包裝在一個EXE中,可以讓它感覺至少不那麼凌亂,或者你使用自己的對話框並遠離任何完全暫停您的操作腳本的mProject調用。

我擡頭看了一眼在這裏,但似乎沒有什麼蹦出來,也許你更熟悉: http://www.screentime.com/software/flash-projector/docs

祝你好運,如果你得到一個更好的解決辦法想通了,讓我知道,因爲我很好奇mProject將如何應對對鋅。

+1

我看到有一個mApplication.abortFunction(),它表示它是用於異步調用,但我會說這是值得一試的,文檔在這裏:[http://www.screentime.com/software/flash-projector/docs/ AS3-MAPP-abortFunction.htm](http://www.screentime.com/software/flash-projector/docs/AS3-mApp-abortFunction.htm) – ToddBFisher

相關問題