1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
| /* ----------------------------------------------------------------------------
*
* classe ComposantBase v1.0
*
* Lorenzo
*
*
* AS >= 3.0
* package commun Flash et Flex
------------------------------------------------------------------------------- */
package classes {
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.Dictionary;
/**
* @author Lorenzo
*
* La classe mere pour tous les composants visuels
*
* @example
* <listing version="3.0">
* </listing>
*
* @see
*/
public class ComposantBase extends Sprite{
// -----------------------------------------------------------------------------------
// DECLARATIONS
// -----------------------------------------------------------------------------------
// ----------------------------- Parametres utilisateur ------------------------------
// -------------------------------- Parametres classe --------------------------------
// total des occurences de cette classe
// a repeter dans tous les classes filles
private static var totalOccurence:uint = 0;
// indique si l'occurence du composant est dans la liste d'affichage
//INFO: sera utile dans tous les setter pour savoir s'il faut marqueur le composant pour une re-création
protected var _surScene:Boolean = false;
// Indique s'il faut faire un trace() dans chaque méthode pour indiquer le cheminement des scripts
public static var DEBUG:Boolean = false;
// ----------------------------------- Évenements ------------------------------------
/**
* Propagé quand la construction visuel est fini.
* @eventType flash.events.Event.COMPLETE
*/
[Event(name = "complete", type = "flash.events.Event.COMPLETE")]
// -----------------------------------------------------------------------------------
// CONSTRUCTEUR
// -----------------------------------------------------------------------------------
/**
* Constructeur de ComposantBase
*/
public function ComposantBase() {
if ( DEBUG ) trace("lol.controle.ComposantBase -> ComposantBase()");
super();
this.addEventListener(Event.ADDED_TO_STAGE, this.evtThisAddedToStage, false, 0, true);
this.addEventListener(Event.REMOVED_FROM_STAGE, this.evtThisRemovedFromStage, false, 0, true);
// a repeter dans tous les classes filles
this.name = "ComposantBase" + totalOccurence;
ComposantBase.totalOccurence++;
}
// -----------------------------------------------------------------------------------
// METHODES STATIQUES
// -----------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------
// METHODES PRIVATE
// -----------------------------------------------------------------------------------
/**
* Lancer la recréation de l'occurence.
*/
private function lanceurRecreation(ev:Event = null):void {
if ( DEBUG ) trace("lol.controle.ComposantBase -> lanceurRecreation()");
if( this._surScene == false ){
return;
}
this.dessiner();
this.removeEventListener(Event.ENTER_FRAME, lanceurRecreation);
this.dispatchEvent(new Event(Event.COMPLETE));
}
// -----------------------------------------------------------------------------------
// METHODES PROTECTED
// -----------------------------------------------------------------------------------
/**
* Marquage de l'occurence comme devant être re-crée.
* //INFO: Cette méthode doit être executé dans les "setter" (lorsque qu'une propriété est modifié de l'extérieur).
* //INFO: les modifications des propriétés par la classe ne doivent pas passer par les setters pour des raisons de performances
*/
protected function marqueurRecreation():void {
if ( DEBUG ) trace("lol.controle.ComposantBase -> marqueurRecreation()");
this.addEventListener(Event.ENTER_FRAME, lanceurRecreation);
}
/**
* Dessiner la représentation visuel de l'occurence.
* Les classes enfants doivent étendre cette méthode.
*/
protected function dessiner(ev:Event = null):void {
if ( DEBUG ) trace("lol.controle.ComposantBase -> dessiner()");
}
/**
* Detruire le composant et son contenu (removeChild() + effacement evenements).
* l'occurence ne peut plus être ajouté à la liste d'affichage aprés execution de cette méthode
* Les classes enfants doivent étendre cette méthode pour y effacer leurs évenements + destruction références.
*/
protected function detruire():void {
if ( DEBUG ) trace("lol.controle.ComposantBase -> detruire()");
while (this.numChildren > 0) {
this.removeChildAt(0);
}
this.graphics.clear();
this.removeEventListener(Event.ENTER_FRAME, lanceurRecreation);
this.removeEventListener(Event.ADDED_TO_STAGE, evtThisAddedToStage);
this.removeEventListener(Event.REMOVED_FROM_STAGE, evtThisRemovedFromStage);
}
// -----------------------------------------------------------------------------------
// METHODES PUPLIQUES
// -----------------------------------------------------------------------------------
/**
* Représentation sous forme de chaîne de loccurence.
*/
public override function toString():String {
return "lol.controle.ComposantBase : name=" + this.name;
}
// -----------------------------------------------------------------------------------
// EVENEMENTS
// -----------------------------------------------------------------------------------
// ----------------- gestion de l'occurence dans la liste d'affichage ----------------
protected function evtThisAddedToStage(ev:Event = null):void {
if ( DEBUG ) trace("lol.controle.ComposantBase -> evtThisAddedToStage()");
this._surScene = true;
this.dessiner();
}
protected function evtThisRemovedFromStage(ev:Event = null):void {
if ( DEBUG ) trace("lol.controle.ComposantBase -> evtThisRemovedFromStage()");
this._surScene = false;
this.detruire();
}
// -----------------------------------------------------------------------------------
// GET/SET
// -----------------------------------------------------------------------------------
}
} |
Partager