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.
Liens
Jeux
Catégories
De retour
08 Apr 2010
Création d'une librairie d'icone
05 Apr 2010
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.
Communiquer entre un itemRenderer et son parent
24 Mar 2010
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 :
Découper une zone d'image en AS3
22 Jan 2010
Voici comment faire.
[Embed(source = 'monImage.png')] private var MonImg:Class; var pic : Bitmap = new MonImg();
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.
Utiliser l'API YouTube en AS3
29 Dec 2009
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);
}
