Probleme de syntaxe [Résolu]

Messages postés
39
Date d'inscription
dimanche 29 novembre 2009
Dernière intervention
8 mai 2011
- 21 mars 2011 à 23:45 - Dernière réponse :
Messages postés
39
Date d'inscription
dimanche 29 novembre 2009
Dernière intervention
8 mai 2011
- 29 mars 2011 à 18:17
Bonsoir, je viens de terminer une class Chrono, fonctionnant avec la Date, je suis plutôt satisfait du résultat, cependant j'ai mis beaucoup de temps à bidouiller le code, notamment pour créer ma fonction « resume », et je cherche a améliorer ma façons de coder, je suis certain que ma syntaxe est lourde, étant débutant en actionscript je cherche des conseil de personne plus expérimenter.
Voilà, j'espère ne pas trop vous ennuyer...^^
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Dernière intervention
20 juin 2014
- 22 mars 2011 à 07:32
3
Merci
Hello,

c'est sûr qu'il y a plusieurs façons de coder, et certaines seront effectivement moins lourdes que d'autres, beaucoup moins lourdes parfois . Après ce n'est pas évident d'avoir le code parfait (peut-être même impossible...), mais tout script est potentiellement "améliorable", cependant un code qui fonctionne et qui n'a pas / plus de bug est un code "opérationnel" (la chasse aux bugs, c'est le dada du programmeur). Mais lorsqu'on devient perfectionniste, parce qu'au fil de l'apprentissage on le devient, voir même maniaque , on cherche toujours à gagner un peu sur ceci ou cela : comment charger plus vite tel média, comment afficher plus vite cela, comment réduire au maximum le poids d'un fichier, comment réduire / optimiser un code tout en conservant les propriétés et l'efficacité de ce code.
Bref, c'est un travail de tous les jours, et c'est surtout l'expérience qui fera que tes codes seront à l'avenir rédigés de manière impeccable et presque de façon "instantanée". Mais ça c'est l'apanage de ceux qui ont des années d'expérience et qui ont, si je puis dire, grandit avec Flash (ce qui n'est pas mon cas ).

Quoi qu'il en soit, si tu veux une analyse et un retour sur ton travail, le mieux c'est de poster ton code .

A plus,

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;

musichrono

Merci BBFUNK01 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de BBFUNK01
Meilleure réponse
Messages postés
39
Date d'inscription
dimanche 29 novembre 2009
Dernière intervention
8 mai 2011
- 22 mars 2011 à 13:08
3
Merci
Bonjours, merci pour cette réponse, je post tout de suite mon script...^^


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
{
public var zoneInterface:Sprite;
public var zoneInterface2:Sprite;
public var zoneInterface3:Sprite;

public var aiguHeur:Shape;
public var aiguMin:Shape;
public var aiguSec:Shape;

public var aiguDixSec:Shape;
public var aiguDixiem:Shape;
public var aiguSixiem:Shape;


public var date0:Date;
public var dateXx:Date;

public var moteur:Timer;

public var dejaEcoule:Number;
public var sEcoule:Number;

public var tabTem0:Array;
public var tabTemPause:Array;

public var rotaFact:Number;

public var btStartPause:SimpleButton;
public var btStopReset:SimpleButton;

public var normal:Shape;
public var survol:Shape;
public var clic:Shape;

public var normal1:Shape;
public var survol1:Shape;
public var clic1:Shape;
public var zoneTexte3:TextField;
public var format:TextFormat;
public function Chrono()
{
zoneTexte3=new TextField;
zoneTexte3.selectable = false;
zoneTexte3.autoSize= TextFieldAutoSize.LEFT;
zoneTexte3.x=20;
zoneTexte3.y=-25;

format = new TextFormat();
format.font = "Charlemagne Std";
format.color = 0xBD7A74;
format.size = 18;
format.underline = true;

addChild(zoneTexte3);

zoneTexte3.defaultTextFormat = format;

tabTemPause=new Array();
tabTem0=new Array();

dejaEcoule=0;
sEcoule=0;

moteur = new Timer(1);

zoneInterface=new Sprite();
zoneInterface.x=160;
zoneInterface.y=160;

addChild(zoneInterface);

zoneInterface2=new Sprite();
zoneInterface2.x=253;
zoneInterface2.y=15;
zoneInterface2.buttonMode=true;

addChild(zoneInterface2);

zoneInterface3=new Sprite();
zoneInterface3.x=285;
zoneInterface3.y=15;
zoneInterface3.buttonMode=true;

addChild(zoneInterface3);

btStartPause= new SimpleButton();

normal= new Shape();
survol= new Shape();
clic= new Shape();

normal.graphics.beginFill(0x3C3C3C);
normal.graphics.drawRect(0, 0, 20, 20);

survol.graphics.beginFill(0x666666);
survol.graphics.drawRect(0, 0, 20, 20);

clic.graphics.beginFill(0xCCCCCC);
clic.graphics.drawRect(0, 0, 20, 20);

btStartPause.upState = normal;
btStartPause.overState = survol;
btStartPause.downState = clic;
btStartPause.hitTestState = normal;

zoneInterface2.addChild(btStartPause);

btStopReset = new SimpleButton();

normal1 = new Shape();
survol1 = new Shape();
clic1 = new Shape();

normal1.graphics.beginFill(0x3C3C3C);
normal1.graphics.drawRect(0, 0, 20, 20);

survol1.graphics.beginFill(0x666666);
survol1.graphics.drawRect(0, 0, 20, 20);

clic1.graphics.beginFill(0xCCCCCC);
clic1.graphics.drawRect(0, 0, 20, 20);

btStopReset.upState = normal1;
btStopReset.overState = survol1;
btStopReset.downState = clic1;
btStopReset.hitTestState = normal1;

zoneInterface3.addChild(btStopReset);

aiguHeur= new Shape();

aiguHeur.graphics.lineStyle(4, 0x996633, 1, false, LineScaleMode.NONE, CapsStyle.ROUND);
aiguHeur.graphics.moveTo(0, -70);
aiguHeur.graphics.lineTo(0, 0);

zoneInterface.addChild(aiguHeur);

aiguMin= new Shape();

aiguMin.graphics.lineStyle(2, 0x3299FF, 1, false, LineScaleMode.NONE, CapsStyle.ROUND);
aiguMin.graphics.moveTo(0, -90);
aiguMin.graphics.lineTo(0, 0);

zoneInterface.addChild(aiguMin);

aiguSec= new Shape();

aiguSec.graphics.lineStyle(1, 0x33CC33, 1, false, LineScaleMode.NONE, CapsStyle.ROUND);
aiguSec.graphics.moveTo(0, -100);
aiguSec.graphics.lineTo(0, 0);

zoneInterface.addChild(aiguSec);

aiguDixSec= new Shape();

aiguDixSec.graphics.lineStyle(1.1, 0xFF9951, 0.5, false, LineScaleMode.NONE, CapsStyle.ROUND);
aiguDixSec.graphics.moveTo(0, -60);
aiguDixSec.graphics.lineTo(0, 0);

zoneInterface.addChild(aiguDixSec);

aiguDixiem= new Shape();

aiguDixiem.graphics.lineStyle(0.2, 0xFF9900, 0.5, false, LineScaleMode.NONE, CapsStyle.ROUND);
aiguDixiem.graphics.moveTo(0, -50);
aiguDixiem.graphics.lineTo(0, 0);

zoneInterface.addChild(aiguDixiem);

aiguSixiem= new Shape();

aiguSixiem.graphics.lineStyle(0.1, 0xFF9965, 0.5, false, LineScaleMode.NONE, CapsStyle.ROUND);
aiguSixiem.graphics.moveTo(0, -30);
aiguSixiem.graphics.lineTo(0, 0);

zoneInterface.addChild(aiguSixiem);

btStartPause.addEventListener(MouseEvent.MOUSE_DOWN,clicStart);

function tourner(evt:TimerEvent):void
{
zoneTexte3.text="chrono: "+Math.round(rotaFact/82000000)+" : "+Math.round(rotaFact/120000)+" : "+(Math.abs(rotaFact/1000));
dateXx=new Date();

sEcoule=(dateXx.getTime()-tabTem0[0]);
rotaFact=sEcoule+dejaEcoule;

trace(Math.round((sEcoule+dejaEcoule)/1000));

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);
}

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());

trace("start");
}

function clicPause(evt:MouseEvent)
{
btStartPause.removeEventListener(MouseEvent.MOUSE_DOWN,clicPause);
btStartPause.addEventListener(MouseEvent.MOUSE_DOWN,clicResume);

moteur.reset();

tabTemPause.shift();

date0=new Date();
tabTemPause.push(date0.getTime());

dejaEcoule=(tabTemPause[0]-tabTem0[0]+dejaEcoule);

trace("pause=="+Math.round(dejaEcoule/1000));
}

function clicResume(evt:MouseEvent)
{
btStartPause.removeEventListener(MouseEvent.MOUSE_DOWN,clicResume);
btStartPause.addEventListener(MouseEvent.MOUSE_DOWN,clicPause);

moteur.addEventListener(TimerEvent.TIMER,tourner);
moteur.start();

tabTem0.shift();

date0=new Date();

tabTem0=new Array();

tabTem0.push(date0.getTime());

trace("resume");
}

function clicStop(evt:MouseEvent)
{
btStopReset.removeEventListener(MouseEvent.MOUSE_DOWN,clicStop);
btStopReset.addEventListener(MouseEvent.MOUSE_DOWN,clicReset);

btStartPause.addEventListener(MouseEvent.MOUSE_DOWN,clicStart);
btStartPause.removeEventListener(MouseEvent.MOUSE_DOWN,clicResume);
btStartPause.removeEventListener(MouseEvent.MOUSE_DOWN,clicPause);

moteur.reset();

tabTem0=new Array(0);
tabTemPause=new Array(0);

dejaEcoule=0;
sEcoule=0;

trace("stop");
}

function clicReset(evt:MouseEvent)
{
btStopReset.removeEventListener(MouseEvent.MOUSE_DOWN,clicReset);
aiguHeur.rotation = 0;
aiguMin.rotation = 0;
aiguDixSec.rotation = 0;
aiguSec.rotation = 0;
aiguDixiem.rotation =0;
aiguSixiem.rotation = 0;
}
}
}
}

Merci mtlbss 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de mtlbss
Meilleure réponse
Messages postés
468
Date d'inscription
mardi 17 avril 2007
Dernière intervention
4 mai 2013
- 29 mars 2011 à 01:50
3
Merci
Bonjour,

voila quelques éléments d'amélioration, je n'ai pas fait les débugs et il reste encore des petites possibilités:


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; 
} 
} 
}

Merci aerolyte 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de aerolyte
Meilleure réponse
Messages postés
468
Date d'inscription
mardi 17 avril 2007
Dernière intervention
4 mai 2013
- 29 mars 2011 à 01:55
3
Merci
J'ai oublié:

supprime:
>import flash.display.MovieClip;

remplace:
>public class Chrono extends MovieClip{
par
>public class Chrono extends Sprite{

Merci aerolyte 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de aerolyte
Meilleure réponse
Messages postés
468
Date d'inscription
mardi 17 avril 2007
Dernière intervention
4 mai 2013
- 29 mars 2011 à 01:58
3
Merci
pas possible d'éditer

supprime:
>import flash.events.Event;

remplace:
>import flash.text.*
par
>import flash.text.TextField;
>import flash.text.TextFieldAutoSize;

Merci aerolyte 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de aerolyte
Meilleure réponse
Messages postés
39
Date d'inscription
dimanche 29 novembre 2009
Dernière intervention
8 mai 2011
- 29 mars 2011 à 09:59
3
Merci
bonjours, tout d'abord merci beaucoup pour la réponse, j'ai regardé vite fait, mais je prendrais plus de temps dans la journée, en revanche, en supprimant: >import flash.text.*<, je doit aussi ajouter :>import flash.text.TextFormat;<, pour la gestion des bouton, il y a aussi un petit problème, mais je devrais trouver se qui déconne, en tout cas c'est très sympa, car je vais pouvoir améliorer ma façons de coder, encore merci^^

Merci mtlbss 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de mtlbss
Meilleure réponse
Messages postés
468
Date d'inscription
mardi 17 avril 2007
Dernière intervention
4 mai 2013
- 29 mars 2011 à 11:20
3
Merci
pense à rajouter (":void" a tes declarations de function si elle ne renvoie pas de valeur

Merci aerolyte 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de aerolyte
Meilleure réponse
Messages postés
39
Date d'inscription
dimanche 29 novembre 2009
Dernière intervention
8 mai 2011
- 29 mars 2011 à 18:17
3
Merci
bon, je viens de rajouter les ":void", cependant, je ne sais pas du tout a quoi cela sert, pour mon problème de bouton, c'est assez étrange, car je ne voie pas trop les causes, le problème c'est que ne s'affiche qu'un bouton a la fois....



(j'ai corrigé l'affichage numérique qui ne fonctionnais pas bien.)

Merci mtlbss 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de mtlbss

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.