package script.test{ import flash.display.Sprite; import flash.display.Shape; import flash.display.LineScaleMode; import flash.display.SimpleButton; import flash.display.CapsStyle; import flash.utils.Timer; import flash.events.TimerEvent; import flash.events.Event; import flash.display.MovieClip; import flash.events.MouseEvent; import flash.text.* public class Chrono extends MovieClip{ private var zoneInterface:Sprite; private var aiguHeur:Shape=new Shape(); private var aiguMin:Shape=new Shape(); private var aiguSec:Shape=new Shape(); private var aiguDixSec:Shape=new Shape(); private var aiguDixiem:Shape=new Shape(); private var aiguSixiem:Shape=new Shape(); private var btStartPause:SimpleButton; private var btStopReset:SimpleButton; private var zoneTexte3:TextField; private var date0:Date; private var dateXx:Date; private var moteur:Timer; private var dejaEcoule:Number; private var sEcoule:Number; private var tabTem0:Array; private var tabTemPause:Array; private var rotaFact:Number; public function Chrono(){ var format:TextFormat=new TextFormat(); format.font="Charlemagne Std"; format.color=0xBD7A74; format.size=18; format.underline=true; zoneTexte3=new TextField();//manque les parenthèses zoneTexte3.selectable=false; zoneTexte3.antiAliasType="advanced";////////////////////////////AJOUT zoneTexte3.autoSize=TextFieldAutoSize.LEFT; zoneTexte3.x=20; zoneTexte3.y=-25; zoneTexte3.defaultTextFormat=format; zoneInterface=new Sprite(); zoneInterface.x=160; zoneInterface.y=160; var zoneInterface2:Sprite=new Sprite(); zoneInterface2.x=253; var zoneInterface3:Sprite=new Sprite(); zoneInterface3.x=285; zoneInterface2.y=zoneInterface3.y=15;//groupage possible zoneInterface2.buttonMode=zoneInterface3.buttonMode=true;//groupage possible //sert a rien de generaliser ces variables a la classe var normal:Shape=new Shape(); normal.graphics.beginFill(0x3C3C3C); normal.graphics.drawRect(0,0,20,20); var survol:Shape=new Shape(); survol.graphics.beginFill(0x666666); survol.graphics.drawRect(0,0,20,20); var clic:Shape=new Shape(); clic.graphics.beginFill(0xCCCCCC); clic.graphics.drawRect(0,0,20,20); btStartPause=new SimpleButton(); btStartPause.upState=normal; btStartPause.overState=survol; btStartPause.downState=clic; btStartPause.hitTestState=normal; btStartPause.addEventListener(MouseEvent.MOUSE_DOWN,clicStart);//place le au meme niveau sauf si tu compte faire une gestion plus pointu des activation des ecouteurs //pq faire des doublons de shapes si ce sont les memes??????? btStopReset=new SimpleButton(); btStopReset.upState=normal; btStopReset.overState=survol; btStopReset.downState=clic; btStopReset.hitTestState=normal; dessiner(aiguHeur,4,0x996633,1,-70); dessiner(aiguMin,2,0x3299FF,1,-90); dessiner(aiguSec,1,0x33CC33,1,-100); dessiner(aiguDixSec,1.1,0xFF9951,0.5,-60); dessiner(aiguDixiem,0.2,0xFF9900,0.5,-50); dessiner(aiguSixiem,0.1,0xFF9965,0.5,-30); //un groupage des addchilds (dans la limite du possible) permet de bien vérifier la hierachie d'affichage addChild(zoneTexte3); addChild(zoneInterface); zoneInterface2.addChild(btStartPause); addChild(zoneInterface2); zoneInterface3.addChild(btStopReset); addChild(zoneInterface3); // sans doute il sera preferable de mettre toute les valeurs d'initialisation d'en une fonction séparée, comme cela tu peux initier et reseter avec la meme méthode tabTemPause=new Array(); tabTem0=new Array(); dejaEcoule=sEcoule=0;//groupage moteur=new Timer(1); } //alors la surtout ne pas imbriquer les fonctions (je ne fais pas de test de debug, c'est a toi de le faire) private function dessiner(a0:Shape,a1:Number,a2,a3:Number,a4:Number):void{ a0.graphics.lineStyle(a1,a2,a3,false,LineScaleMode.NONE,CapsStyle.ROUND); a0.graphics.moveTo(0,a4); a0.graphics.lineTo(0,0); zoneInterface.addChild(a0); } private function tourner(evt:TimerEvent):void{ dateXx=new Date();//? pas le courage de tout vérifier sEcoule=(dateXx.getTime()-tabTem0[0]); rotaFact=sEcoule+dejaEcoule; zoneTexte3.text="chrono: "+Math.round(rotaFact/82000000)+" : "+Math.round(rotaFact/120000)+" : "+(Math.abs(rotaFact/1000));// a poser apres aiguHeur.rotation=Math.round(rotaFact*0.000006); aiguMin.rotation=Math.round(rotaFact*0.0001); aiguDixSec.rotation=Math.round(rotaFact*0.0006); aiguSec.rotation=Math.round(rotaFact*0.006); aiguDixiem.rotation=Math.round(rotaFact*0.036); aiguSixiem.rotation=Math.round(rotaFact*0.06); } private function clicStart(evt:MouseEvent){ btStartPause.removeEventListener(MouseEvent.MOUSE_DOWN,clicStart); btStartPause.addEventListener(MouseEvent.MOUSE_DOWN,clicPause); btStopReset.addEventListener(MouseEvent.MOUSE_DOWN,clicStop); moteur.addEventListener(TimerEvent.TIMER,tourner); moteur.start(); date0=new Date(); tabTem0.push(date0.getTime()); } private function clicPause(evt:MouseEvent){ btStartPause.removeEventListener(MouseEvent.MOUSE_DOWN,clicPause); moteur.reset(); tabTemPause.shift(); date0=new Date(); tabTemPause.push(date0.getTime()); dejaEcoule=(tabTemPause[0]-tabTem0[0]+dejaEcoule); btStartPause.addEventListener(MouseEvent.MOUSE_DOWN,clicResume); } private function clicResume(evt:MouseEvent){ btStartPause.removeEventListener(MouseEvent.MOUSE_DOWN,clicResume); tabTem0.shift(); date0=new Date(); tabTem0=new Array(); tabTem0.push(date0.getTime()); btStartPause.addEventListener(MouseEvent.MOUSE_DOWN,clicPause); moteur.addEventListener(TimerEvent.TIMER,tourner); moteur.start(); } private function clicStop(evt:MouseEvent){ //enleve en premier btStopReset.removeEventListener(MouseEvent.MOUSE_DOWN,clicStop); btStartPause.removeEventListener(MouseEvent.MOUSE_DOWN,clicResume); btStartPause.removeEventListener(MouseEvent.MOUSE_DOWN,clicPause); moteur.reset(); tabTem0=new Array(0); tabTemPause=new Array(0); dejaEcoule=sEcoule=0; //puis ajoute btStopReset.addEventListener(MouseEvent.MOUSE_DOWN,clicReset); btStartPause.addEventListener(MouseEvent.MOUSE_DOWN,clicStart); } private function clicReset(evt:MouseEvent){ btStopReset.removeEventListener(MouseEvent.MOUSE_DOWN,clicReset); aiguHeur.rotation=aiguMin.rotation=aiguDixSec.rotation=aiguSec.rotation=aiguDixiem.rotation=aiguSixiem.rotation=0; } } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question