Categories » Game Dev Follow me on Twitter !

Sauvegarder une liste d'entiers dans un shared object

Voici une petite astuce qui peut vous simplifier la vie. Dans un grand nombre de jeux, nous avons besoin de stocker la liste des niveaux terminés par le joueur, et de pouvoir y accéder rapidement. La méthode la plus simple est de stocker cette donnée dans un SharedObject que nous retrouverons à chaque lancement de session.

 

Sauvegarde des données

 

Pour stocker une liste d'entiers dans un SharedObject sous la forme d'un entier seul, il faut sauvegarder la somme des puissances de 2 des valeurs souhaitées.
var mySo:SharedObject = SharedObject.getLocal("myApplication");
var dataToSave : Array = [2, 5, 4];
var somme : int = 0;
for each(var data : int in dataToSave)
{
    somme += Math.pow(2, data);
}
mySo.data.savedValue = somme;

 

Récupération des données

 

Et pour récupérer les données :
var intValue : int = mySo.data.savedValue;
var currentIndex : int; // identifiant du niveau à tester
if( ( Math.pow(2, currentIndex) & intValue) > 0 )
{
    // L'entier est bien présent dans la liste
}

Lire la suite >>


Cool Pixel Effect

Voici une petite démo d'un effet pixels.
Importez l'image de votre choix, puis sauvegardez le png généré :
 
Votre lecteur Flash n'est pas à jour. Installer la dernière version
 

Fonctionnement :

 
Chaque pixel de l'image source est récupéré, puis éventuellement dupliqué (selon la valeur du zoom), et pour terminer on lui applique un effet de bordure.
 

L'effet de bordure n'est visible que pour un zoom d'au moins x3.
Il faut avoir la place de rajouter un pixel de bordure de chaque coté du pixel de l'image source.

 
Dû aux limitations du flash player 10, l'image de destination (taille image source x coefficient de zoom) ne peut dépasser 8191 pixels de haut et de large (restriction du BitmapData).

Lire la suite >>


PhotonStorm's FlxHealthBar update

By default in the 1.7 version (FlxBar)

 

In my last Flixel project (My Hero Factory), i needed a vertical health bar. So i decided to use Photon Storm's flixel power tools, which has a health bar quickly usable. But there is only an horizontal one.

 

So here is my quick update to his FlxHealthBar class :

 

First we need more possibilities :

public static const FILL_LEFT_TO_RIGHT        :int = 1;
public static const FILL_RIGHT_TO_LEFT        :int = 2;
public static const FILL_INSIDE_OUT           :int = 3;
public static const FILL_TOP_TO_BOTTOM        :int = 4;
public static const FILL_BOTTOM_TO_TOP        :int = 5;

 

The setup function :

Lire la suite >>


AsLibraryHelper : interface graphique pour swfmill

Utilisant beaucoup haXe et swfmill en parallèle sur mes projets personnels, j'ai dernièrement décidé de faire une application pour me simplifier la vie pour la création et l'utilisation de librairie flash.

 

J'ai donc entreprit de coder une application AIR qui, à l'aide d'un simple drag and drop sur la fenetre, permettrait d'ajouter des éléments à la librairie qui sera ensuite compilée directement en utilisant swfmill.

Il est également possible d'importer un fichier xml pour pouvoir récupérer et éditer celle-ci depuis l'interface.

 

Les sons et les images sont pré-visualisable juste via un click sur l'élément.

 

Voici en image ce que ca rend :

Lire la suite >>


As3isolib - Déplacements

Dans le post précédent, nous avions vu comment initialiser les données nécessaire à as3isolib. Ici nous allons simplement ajouter un écouteur sur le clic de la souris et déplacer l'objet.

 

L'écouteur doit donc être ajouté sur la grille :

 

grid.addEventListener(MouseEvent.CLICK, gridMouseHandler);

private function gridMouseHandler(pEvt:ProxyEvent):void
{
    var evt:MouseEvent = MouseEvent(pEvt.targetEvent);
    var pt:Pt = new Pt(evt.localX, evt.localY);
    IsoMath.screenToIso(pt);
    
    monElement.moveTo( Math.floor(pt.x/CELL_SIZE) * CELL_SIZE, Math.floor(pt.y/CELL_SIZE) * CELL_SIZE, 0 );
}

 

Quelques informations complémentaires :

  • eDpLib.events.ProxyEvent hérite de la classe flash.events.Event et permet en plus à un proxy de redistribuer les informations de l'évènement au nom de l'IEventDispatcher qui n'est pas accessible directement depuis la liste d'affichage.
    Pour faire simple, ne vous posez pas la question et utilisez systématiquement cette classe sur la gestion d'évènement :)
  • as3isolib.geom.Pt est l'équivalent d'un Point avec une coordonnée Z supplémentaire.
  • La fonction statique screenToIso() permet de convertir les coordonnées dans l'espace 3D isométrique de la grille.

 

Pour faire quelque chose de plus joli, nous pourrions utiliser TweenLite (ou une quelconque librairie d'animation). Nous aurions donc :

 

TweenLite.to( monElement, 1, {x:Math.floor(pt.x/CELL_SIZE)*CELL_SIZE,
                              y:Math.floor(pt.y/CELL_SIZE)*CELL_SIZE});

Lire la suite >>


Showing 1 - 5 of 19 Articles | Page 1 of 4