// nombre de fenêtres var nbFenetres:int=12; // création d'un conteneur var conteneurFenetres:Sprite = new Sprite(); // ajout à la liste d'affichage addChild( conteneurFenetres ); var maFenetre:Fenetre; // modification de la cadence de l'animation stage.frameRate=30; for (var i:int = 0; i< nbFenetres; i++) { maFenetre = new Fenetre(); maFenetre.destX = 7 + Math.round ( i % 3 ) * ( maFenetre.width + 10 ); maFenetre.destY = 7 + Math.floor ( i / 3 ) * ( maFenetre.height + 10 ); maFenetre.addEventListener( Event.ENTER_FRAME, mouvement ); conteneurFenetres.addChild( maFenetre ); } function mouvement( pEvt:Event ):void { // algorithme d’inertie pEvt.target.x -= ( pEvt.target.x - pEvt.target.destX ) * .3; pEvt.target.y -= ( pEvt.target.y - pEvt.target.destY ) * .3; } // souscription auprès du conteneur pour la phase de capture conteneurFenetres.addEventListener( MouseEvent.CLICK, captureClic, true ); // souscription auprès du conteneur pour la phase de remontée conteneurFenetres.addEventListener( MouseEvent.CLICK, clicRemontee ); function captureClic( pEvt:MouseEvent ):void { pEvt.currentTarget.removeChild( pEvt.target as DisplayObject ); } function clicRemontee( pEvt:MouseEvent ):void { var nbFenetres:int=pEvt.currentTarget.numChildren; var objetGraphique:DisplayObject; var maFenetre:Fenetre; while ( nbFenetres-- ) { // récupération des objets graphiques objetGraphique=pEvt.currentTarget.getChildAt(nbFenetres); // si l'un d'entre eux est de type Fenetre if (objetGraphique is Fenetre) { // nous le transtypons en type Fenetre maFenetre=objetGraphique as Fenetre; // repositionnement de chaque occurrence maFenetre.destX = 7 + Math.round ( nbFenetres % 3 ) * ( maFenetre.width + 10 ); maFenetre.destY = 7 + Math.floor ( nbFenetres / 3 ) * ( maFenetre.height + 10 ); } } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question