2010-08-25 15 views
2

Je fais un jeu de puzzle Flash. Lorsque l'utilisateur charge le jeu, il doit demander s'il doit reprendre le jeu à partir du dernier état (s'il existe). J'ai un système de sérialisation en place, mais je dois m'assurer que l'état chargé est définitivement le dernier état.Flash/AS3 "Shutdown" ou événement "close"?

Une solution consiste à enregistrer l'état à SharedObject chaque fois que l'état change (lorsque le joueur fait un mouvement). Cependant, l'état du jeu inclut parfois un compte à rebours, donc je devrais être constamment (ou périodiquement) en train de sauvegarder l'état afin de le conserver. Je suppose que c'est acceptable, mais il semble kludgey.

Y a-t-il un événement qui est déclenché lorsque le swf est fermé? Ou quelqu'un d'autre a une autre solution élégante à cela?

(je ne suis pas avec de l'air, mais des solutions nécessitant AIR sont appréciées.)

Edit: Un autre point important est que je ne peux pas avoir le contrôle sur le code HTML pour intégrer le jeu, car il peut être syndiquée à de nombreux sites. Donc, les solutions impliquant JavaScript ne sont pas idéales.

Répondre

1

L'événement en proche semble la bonne solution, mais je me demande si vous pouviez «partagé votre sérialisation? c'est-à-dire sauvegarder l'état complet du puzzle à chaque coup, mais aussi avoir un état secondaire "léger" pour votre compte à rebours (ou quelque chose de similaire) qui pourrait être mis à jour chaque fois que le compte à rebours change.

Cela peut être plus facile que d'essayer d'attraper l'événement de fermeture et d'enregistrer avant que la page ne soit détruite (d'autant plus que les navigateurs ne sont pas cohérents dans cette zone).

+0

Au lieu d'un événement d'arrêt, je pense que vous avez raison de séparer la sérialisation. J'envisagerai de le faire si ma sérialisation existante est trop lourde pour fonctionner toutes les secondes. À votre santé – aaaidan

0
+0

Fermer, mais pas tout à fait ce que je cherche, je pense. Je ne veux pas avertir le joueur de sauvegarder manuellement l'état du jeu quand ils tentent de fermer la fenêtre, je veux que ce soit calme, automatique (et fiable). – aaaidan

2

Si Flash est hébergé sur une page HTML, vous pouvez utiliser la notification d'événement « fenêtre ferme » pour tirer un message dans votre objet Flash soit en utilisant l'ancienne skool GetVariable() ou nouveau-stylee FlashCall() mécanismes. Que vous puissiez réellement conserver l'état avant que votre objet Flash ne soit détruit est une autre question ... vous pouvez toujours faire le (mal) 'Êtes-vous sûr de vouloir fermer/quitter cette fenêtre?' alerte que certains sites utilisent.

Handling DOM Events in Flex

HTML 5 events

+0

Mmm, je pense que c'est une bonne solution possible, mais le jeu peut être hébergé sur html que je ne contrôle pas. Je ne suis peut-être pas en mesure de demander que le code HTML contienne un tel code. – aaaidan