Développement XNA pour la XBox et le PC
178
private void GetDevice(IAsyncResult result)
{
if (result.IsCompleted)
{
try
{
device = Guide.EndShowStorageDeviceSelector(result);
container = device.OpenContainer("ChapitreHuit");
}
catch (Exception e)
{
Guide.BeginShowMessageBox(PlayerIndex.One, "Erreur", e.Message,
➥new string[] { "Ok" }, 0, MessageBoxIcon.Error, new
➥AsyncCallback(EndShowMessageBox), null);
}
}
}
private void EndShowMessageBox(IAsyncResult result)
{
if (result.IsCompleted)
Guide.EndShowMessageBox(result);
}
}
Sérialiser des données
Reprenons maintenant l’éditeur de cartes que nous avons commencé à réaliser plus tôt
dans ce chapitre. Nous allons à présent voir comment sérialiser les données : dans un
premier temps en binaire, puis en XML.
Pour qu’une classe puisse être sérialisée, il faut lui ajouter l’attribut [Serializable].
Ajoutons-le aux classes Map et Tile.
[Serializable]
public class Map
{ … }
[Serializable]
public class Tile
{ … }
Nous ne devons pas sérialiser la texture de chaque Tile, mais seulement son nom. Pour
qu’un attribut ne soit pas sérialisé, il faut le marquer comme [NonSerialized].
[NonSerialized]
Texture2D texture;
Pour sérialiser les données en binaire, utilisez l’espace de noms System.Runtime.Serialization
.Formatters.Binary. Ensuite, si le joueur presse la touche S, vérifiez l’existence du fichier
de destination et créez-le si nécessaire, sinon ouvrez-le (dans l’exemple, il est tronqué à
l’ouverture). Utilisez ensuite un objet de type BinaryFormatter et sa méthode Serialize()
à laquelle vous devrez passer le flux où écrire et l’objet à sérialiser. Pour terminer, fermez
le flux.
=Labat FM.book Page 178 Vendredi, 19. juin 2009 4:01 16
178
private void GetDevice(IAsyncResult result)
{
if (result.IsCompleted)
{
try
{
device = Guide.EndShowStorageDeviceSelector(result);
container = device.OpenContainer("ChapitreHuit");
}
catch (Exception e)
{
Guide.BeginShowMessageBox(PlayerIndex.One, "Erreur", e.Message,
➥new string[] { "Ok" }, 0, MessageBoxIcon.Error, new
➥AsyncCallback(EndShowMessageBox), null);
}
}
}
private void EndShowMessageBox(IAsyncResult result)
{
if (result.IsCompleted)
Guide.EndShowMessageBox(result);
}
}
Sérialiser des données
Reprenons maintenant l’éditeur de cartes que nous avons commencé à réaliser plus tôt
dans ce chapitre. Nous allons à présent voir comment sérialiser les données : dans un
premier temps en binaire, puis en XML.
Pour qu’une classe puisse être sérialisée, il faut lui ajouter l’attribut [Serializable].
Ajoutons-le aux classes Map et Tile.
[Serializable]
public class Map
{ … }
[Serializable]
public class Tile
{ … }
Nous ne devons pas sérialiser la texture de chaque Tile, mais seulement son nom. Pour
qu’un attribut ne soit pas sérialisé, il faut le marquer comme [NonSerialized].
[NonSerialized]
Texture2D texture;
Pour sérialiser les données en binaire, utilisez l’espace de noms System.Runtime.Serialization
.Formatters.Binary. Ensuite, si le joueur presse la touche S, vérifiez l’existence du fichier
de destination et créez-le si nécessaire, sinon ouvrez-le (dans l’exemple, il est tronqué à
l’ouverture). Utilisez ensuite un objet de type BinaryFormatter et sa méthode Serialize()
à laquelle vous devrez passer le flux où écrire et l’objet à sérialiser. Pour terminer, fermez
le flux.
=Labat FM.book Page 178 Vendredi, 19. juin 2009 4:01 16
