De retour

Après quelques jours hors ligne, RevoluGame est de retour, avec un nouveau design et une nouvelle formule dans le but de faciliter l'accès aux différents tuto/astuces.

Lire la suite >>


Création d'une librairie d'icone

Lorsque nous développons une application sous Flex, nous avons souvent besoin d'utiliser des icones.
La solution la plus simple évidement est la suivante :
 

< mx:Button label="Delete" icon="@Embed(source='assets/images/delete.png')"/>


Mais lorsque cet icone apparait plein de fois dans l'application, on ne va pas la réimporter à chaque fois, sinon le code va vide devenir lourd, et ça pour rien.
 
La meilleure solution, est de créer une classe qui va ne s'occuper que de ça. Nous allons l'appeler IconLibrary (original non ?)
 

package fr.revolugame.assets  
{
    /**
     * Les icones utilisées dans l'application
     */
    [Bindable]
    public final class IconLibrary
    {
        [Embed(source="assets/images/delete.png")]
        public static const DELETE:Class;
        
        // ...
    }
}


Et lorsque nous voulons l'utiliser dans un mxml :
 

< ![CDATA[
    import fr.revolugame.assets.IconLibrary;
]]>

< mx:Button label="Delete" icon="{IconLibrary.DELETE}"/>
 


Cela permettra d'avoir un code nettement plus propre et probablement moins lourd sur de grosses applications.
 
Si nous voulons encore plus optimiser la chose, il est recommandé de compiler cette librairie dans un swc et de l'importer ensuite dans notre application. Car de ce fait, nous n'aurons pas besoin de recompiler toutes les icones a chaque fois, et pourrons réutiliser cette librairie dans d'autre application.

Lire la suite >>


Communiquer entre un itemRenderer et son parent

Les objets de type liste permettent l'affichage de données dans notre application. Mais il est souvent utile de vouloir afficher, par exemple, des boutons de suppression, ...

Pour ce faire, nous disposons de l'attribut itemRenderer qui va nous permettre de remplir notre liste avec autre chose que des données (voir également des données mais formatées différement).

Il existe deux types d'itemRenderer

Tout d'abord un type que nous pouvons qualifier d'inline.
Exemple : 

< mx:DataGrid>
	< mx:columns>
		< mx:DataGridColumn headerText="Nom" />
		< mx:DataGridColumn headerText="">
			< mx:itemRenderer>
				< mx:Component>
					< mx:Button toolTip="Supprimer" />
				< /mx:Component>
			< /mx:itemRenderer>
		< /mx:DataGridColumn>
	< /mx:columns>
< /mx:DataGrid>

C'est-à-dire que l'itemRenderer est intégré directement dans la balise colonne (dans notre cas colonne de la dataGrid) en utilisant la balise <mx :Component> qui permet de définir une nouvelle partie dans notre MXML. Cette nouvelle partie est vraiment à part. C'est-à-dire que les éléments définis entre les balises <mx :Component></mx :Component> sont isolé du reste du MXML.

Dans le cas ou nous avons besoin de communiquer avec le MXML conteneur, nous pouvons utiliser la méthode propre à un component, outerDocument. Cette méthode permet de sortir du component et donc de communiquer avec le code du parent. Voici un exemple :

Lire la suite >>


Découper une zone d'image en AS3

Voici une petite astuce qui permet d'optimiser une application Flash. Plutôt que d'importer les images en MovieClip, ce qui se veut être couteux en terme de performance, il vaut mieux passer par la classe Bitmap et la classe BitmapData pour récupérer les pixels souhaités pour ensuite les afficher. Et par la même occasion, faire une seule requête sur le serveur est moins couteux (par exemple si vous avez une application nécessitant beaucoup de pictogrammes).
Voici comment faire.

Tout d'abord, il faut importer l'image de la bibliothèque :
[Embed(source = 'monImage.png')] private var MonImg:Class;
var pic : Bitmap = new MonImg();
Maintenant que nous avons notre image au format Bitmap, nous pouvons travailler dessus.
var bmp1 : BitmapData = pic.bitmapData; // récuperation des données
var bmp2 : BitmapData = new BitmapData(18, 16, true); // création de données, avec la taille de l'image finale
var rect : Rectangle = new Rectangle(0, 0, 18, 16); // création de la zone de découpage
var pt : Point = new Point(0, 0); // création du point de fixation de la zone découpée sur la nouvelle image
bmp2.copyPixels(bmp1, rect, pt); // on copie les pixels dans la nouvelle zone
var bmp : Bitmap = new Bitmap(bmp2); // création de notre nouvelle image

Et voilà, nous pouvons maintenant utiliser notre image comme nous le souhaitons, en l'ajoutant à la liste d'affichage par exemple.

Lire la suite >>


Utiliser l'API YouTube en AS3

L'API YouTube permet de lire des vidéos stockées sur YouTube.com directement dans vos applications Flash. Elle permet également de personnaliser l'apparence du lecteur. Voici une brève introduction.
La documentation officielle est présente ici.

Récupération de l'API

Pour pouvoir utiliser l'API dans votre application, il est nécessaire de faire une requete pour recuperer le swc sur le serveur de YouTube. Pour ce faire :

_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
_loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));

Utilisation de l'API

Une fois que la librairie à été chargéé, nous pouvons la récuperer et ajouter les écouteurs sur les différentes actions :

private function onLoaderInit(event:Event):void {
    addChild(_loader);
    _loader.content.addEventListener("onReady", onPlayerReady);
    _loader.content.addEventListener("onError", onPlayerError);
    _loader.content.addEventListener("onStateChange", onPlayerStateChange);
    _loader.content.addEventListener("onPlaybackQualityChange", onVideoPlaybackQualityChange);
}

Une fois que notre lecteur est prêt, nous pouvons charger et lancer la vidéo :

private function onPlayerReady(event:Event):void {
    // Récupération de l'API youtube.
    _player = _loader.content;
    // On lance notre vidéo à partir de son identifiant
    _player.loadVideoById(VIDEO_ID);
    // On définie la taille de la vidéo
    _player.setSize(480, 270);
}

Lire la suite >>


Showing 11 - 15 of 44 Articles | Page 3 of 9