2010-08-25 85 views
2

我正在製作一款Flash益智遊戲。當用戶加載遊戲時,需要詢問是否從最後一個狀態恢復遊戲(如果存在)。我有一個序列化系統,但我需要確保加載狀態絕對是最後一個狀態。Flash/AS3「關機」或「關閉」事件?

一種解決方案是每次狀態改變時(玩家移動時)將狀態保存到SharedObject。然而,遊戲狀態有時會包含倒計時,所以我必須不斷(或定期)保存狀態以保留狀態。我想這是可以接受的,但似乎kludgey。

swf關閉時是否有任何事件被觸發?或者其他人有另一個優雅的解決方案呢?

(我使用的不是空氣,但需要AIR解決方案表示讚賞。)

編輯:另一個重要的一點是,我可能沒有過的遊戲嵌入HTML控件,因爲它可能被聚合到許多網站。所以涉及javascript的解決方案並不理想。

回答

1

上的接近事件聲音正確的解決方案,但我不知道,如果你可以「分裂」的序列化?即在每次移動時保存完整的拼圖狀態,但是也可以在倒計時(或類似的)的次要「輕量」狀態下進行,每次倒計時改變時都可以進行更新。

這可能比嘗試捕捉關閉事件並在頁面被破壞之前保存更容易(尤其是在瀏覽器在此區域中不一致時)。

+0

代替關閉事件,我認爲你是正確的分裂序列化。如果我現有的序列化太重而無法每秒運行,我們會考慮這樣做。乾杯 – aaaidan 2010-08-26 02:56:11

0
+0

關閉,但不是我想要的,我想。我不想警告玩家在嘗試關閉窗口時手動保存遊戲狀態,我希望它安靜,自動(並且可靠)。 – aaaidan 2010-08-26 02:43:55

2

如果您的Flash是一個HTML頁面上託管,可以使用「窗口正在關閉」事件通知解僱的消息到您的Flash對象或者使用舊斯庫爾的getVariable()或新stylee FlashCall()機制。

在你的Flash對象被銷燬之前,你是否真的能夠堅持狀態是另一個問題......你總是可以做(邪惡)「你確定要關閉/離開這個窗口?提醒某些網站使用。

Handling DOM Events in Flex

HTML 5 events

+0

嗯,我認爲這是一個很好的解決方案,但是遊戲可能託管在我無法控制的html上。我可能無法請求HTML包含此類代碼。 – aaaidan 2010-08-26 02:46:54