//Un niveau standard : contient des liens et des noeuds ! package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent;//Interaction utilisateur//souris public class Niveau extends Sprite { public var All_Noeuds:Array; public var All_Liens:Array; public var Officiel:Boolean=true; public var NumeroNiveau:int=0; public var TailleActuelle:Number=1;//Le niveau de Taille du Fond actuel private var TailleFinale:Number=1;//Le niveau final de Taille demandé pour Fond. private var Is_Destructing:Boolean=false; private var DestructionTerminee:Boolean=false; private static const RAYON_NOEUDS:int=200; //Le rayon du cercle fait par les noeuds lors du chargement du niveau public function Niveau(Liens:Array,Largeur:int=0,Hauteur:int=0) { function Shuffle(a:Noeud,b:Noeud):Number { return -1 + Math.floor(3*Math.random());//Mélange aléatoirement l'ensemble } //Trouver le nombre de noeuds : var NbNoeuds:int=0; var Lien:Array; var Arete:Arc for each(Lien in Liens) NbNoeuds=Math.max(NbNoeuds,Lien[0],Lien[1]); All_Noeuds = new Array(); All_Liens = new Array(); NbNoeuds++;//Petite astuce trigonométrique... for(var i:int=0;iMath.min(All_Liens.length/10,.9)) { var UnLien:Arc=All_Liens.pop(); this.removeChild(UnLien); } this.rotation++; if(this.Taille!=1) this.Taille=1; } private function GererTaille(e:Event):void {//Zoomer // dézoomer sur le niveau var dS:Number = (this.TailleFinale - this.scaleX)/5; if (Math.abs(dS)>0.003) this.scaleX = this.scaleY += dS; else { this.Passif=false;//Redonner de la réactivité au niveau. this.TailleActuelle=this.scaleX=this.scaleY=TailleFinale; this.removeEventListener(Event.ENTER_FRAME,GererTaille); } } } }