GraphicLib

La GraphicLib est donc une extension d'AbstractLib, extension qui est spécialisé dans le chargement de contenus graphiques (exemple : [pixLib] - LibStack ou le multi-chargement )

Quelques methodes…
  • initEventSource, initialise le type d'événement (GraphicLibEvent).
  • getContent/setContent, le content est maintenant typé MovieClip, il s'agit du clip dans lequel serra chargé l'éléments graphique (swf/jpeg).
  • show/hide, affiche ou masque le contenu.
  • load, lance le chargement du contenu de l'url dans un MovieClip (getContent).
  • release, détruit le contenu de l'occurrence.
  • getView == getContent.

Donc pour charger un éléments graphique on utilisera une occurrence de GraphicLib, par contre pour ce qui est de la manipulation de cet élément on va passer par un MovieClipHelper, pas de panique c'est pas bien méchant. ;)

MovieClipHelper

Comme l'AbstractLib il s'agit d'un classe abstraite (constructeur privé), ce qui veut dire qu'on est obligé de créer une sous-classe de MovieClipHelper pour pouvoir profiter de ses fonctionnalitées. Vous devez commencer à vous dire que ça fait beaucoup pour manipuler un MovieClip, mais ce qu'il faut comprendre c'est qu'avec MovieClipHelper on va créer des types de vues, ajouter des fonctionnalitées spécifiques aux MovieClip. Rappelez vous ce que vous faisiez en AS1 avec les prototype pour ajouter des fonctionnalitées spécifiques à un MovieClip (MovieClip.prototype.newMethode) et bien maintenant vous avez tous les outils que vous voulez pour réaliser la même chose sans passer par l'extension (prototype) mais bien par la composition. Voyons ce que ça donne avec un petit morceau de code. :)

Une classe TimerUI
import com.bourre.transitions.FPSBeacon;
import com.bourre.visual.MovieClipHelper;
import com.bourre.transitions.IFrameListener;
 
/**
 * @author [ali_o_kan] - Laurent Deketelaere 
 */
class com.exemple.TimerUI 
	extends MovieClipHelper
	implements IFrameListener 
{
	private var _tf : TextField;
	private var _datum : Date;
	
	function TimerUI(name:String, mc:MovieClip) 
	{
		super(name, mc);
		// créé un bloque de texte
		_tf = view.createTextField("__tf", 100000, 0, 0, 100, 22 );
		_init();
	}
	
	private function _init() : Void
	{
		_tf.text = "initialisation";
		// Abonne this à FPSBeacon
		FPSBeacon.getInstance().addFrameListener( this );
	}
	
	// fonction appelé à chaque changement de frame grace à FPSBeacon
	public function onEnterFrame() : Void
	{
		// mise à jour de l'heure
		_datum = new Date();
		_tf.text = _datum.toString();
	}
}
Et son Utilisation
import com.exemple.TimerUI;
var Timer = new TimerUI( "Une horloge", this );

Dans l'exemple ci-dessus on voit que l'on fait appel à une variable «view», il s'agit du MovieClip que l'on va manipuler par composition. Voyons maintenant plus en détail de quoi est composé MovieClipHelper.

Un constructeur…
private function MovieClipHelper( name : String, mc : MovieClip )

Le constructeur prends deux paramètres, le «name» est un identifiant unique qui permet de récupérer l'occurrence d'un MovieClipHelper à partir de n'importe quel endroit dans une application (cf. MovieClipHelper.getMovieClipHelper(sName:String)) et le «mc» est le MovieClip cible dans lequel sera construit la vue du MovieClipHelper.

Une propriété…
  • view : MovieClip -> Il s'agit du clip qui serra manipuler dans la classe.
Une méthode statique…
  • MovieClipHelper.getMovieClipHelper(sName:String) : MovieClipHelper -> Permet de récupérer n'importe quelle instance de MovieClipHelper déjà instancié, il suffit pour cela de passer en paramètre de la fonction statique le nom (identifiant) de ce dernier (String).
  • MovieClipHelper.isRegistered(sName:String) : Boolean -> Teste et revoit un Boolean pour savoir si une occurrence de MovieClipHelper est déjà enregistré avec cet identifiant.
Quelques méthodes…
  • show/hide -> affiche ou masque le contenu de la vue.
  • move(x:Number, y:Number) -> déplace la vue du MovieClipHelper.
  • getName : String -> revoit le nom (l'identifiant) de l'instance.

Vous me direz que c'est un peu light comme API, mais c'est voulu, car le but du MovieClipHelper est d'être étendu et spécialisé. :)

Voilà pour l'aspect théorique, dans la deuxième partie je présenterai la mise en place d'une petite application qui utilise LibStack, GraphicLib et MovieClipHelper. ;)

Infos+