Aide ActionScript 3.0
Forum Programmation : Aide ActionScript 3.0
Bonjour tout le monde,
J'ai besoin d'aide car sur le code suivant :
--------------------------------------------------------------
varX=0;
varY=0;
varMax=5;
varSlow=0.2;
varFast=0.5;
//Accélérer
Character.onEnterFrame=function()
{
if(Key.isDown(Key.RIGHT) and varX<varMax){
varX=varX+varFast}
if(Key.isDown(Key.DOWN) and varY<varMax){
varY=varY+varFast}
if(Key.isDown(Key.LEFT) and varY>varMax){
varX=varX-varFast}
if(Key.isDown(Key.UP) and varX>varMax){
varY=varY-varFast}
//Ralentir
if(varX>0){varX=varX-varSlow}
if(varY>0){varX=varX-varSlow}
if(varX<0){varX=varX+varSlow}
if(varY<0){varX=varX+varSlow}
//Faire bouger
Character._x=Character._x+varX
Character._y=Character._y+varY
}
--------------------------------------------------------------
J'obtiens ces erreurs :
1084: Syntax error: expecting rightparen before and.
if(Key.isDown(Key.RIGHT) and varX<varMax){
1084: Syntax error: expecting rightparen before and.
if(Key.isDown(Key.LEFT) and varX<varMax){
1084: Syntax error: expecting rightparen before and.
if(Key.isDown(Key.UP) and varX<varMax){
1084: Syntax error: expecting rightparen before and.
if(Key.isDown(Key.DOWN) and varX<varMax){
(Et quand j'ajoute une paranthèse sa me donne d'autre erreur)
Message édité par jannewarman32 le 19-09-2007 à 01:34:43
Ton code n'est pas de l'AS3.0 . LA fonction .isDown n'existe plus.
"and" n'existe plus non plus, à remplacer par "&&".
Evites d'utiliser onEnterFrame comme ça, ça ne sert à rien ni en AS2.0 ni en AS3.0. Utilises plutôt l'eventDispatcher qui est bien plus pratique. Le code suivant est en AS3. Celui correspondant au touche clavier est "KeyboardEvent".
Code :
|
Code issus de la doc AS3 de flash rubrique "Capturing keyboard input" sur la doc anglaise ou livedoc. A voir aussi la rubrique "Keyboard Keys and Key Code Values" pour avoir le code de chaque touche clavier.
Message édité par jun2 le 19-09-2007 à 02:27:16
Je suppose que c'est très bien expliquer mais.. jai juste commencer a apprendre le ActionScript en informatique a l'école.. Alors je comprend rien :S
Et mon prof d'informatique sera absent pour 1 semaine.. alors la je sais plus quoi faire pour que sa marche =/
Je viens de t'expliquer que ton code est en actionscript 2, pas en actionscript 3, soit tu exportes ton fichier en as2, soit tu vas lire la documentation de flash accessible via la touche F1 au rubrique que j'ai cité et tu adaptes ton code en conséquence.
La documentation de flash est foutrement bien fourni.
En plus claire. L'as 2 est un mélange foutraque et mal foutu de plusieur façon de codé et est voué à disparaitre, en as3 on passe réellement en programmation orienté objet.
Dans le code d'exemple en AS3 :
D'abord on déclare la fonction reportKeydown, event est une variable de type KeyboardEvent qui est ici un parametre de la fonction reportKeyDown.
Ensuite on "attache" un écouteur d'évènement à la scène ( stage ) qui va renifler tout les évènement qu'on lui demande.
stage.addEventListener(Keyboar [...] tKeyDown);
stage est la scène, ton animation, la zone visible du swf.
addEventListener, la méthode pour attacher un écouteur.
KeyboardEvent.KEY_DOWN est l'évenement que tu veux écouter, la pression des touches claviers. C'est aussi le paramètre qu'on va stocker dans la variable event de la function reportKeyDown
reportKeyDown est la fonction à appeller lors de l'évenement.
ton code devrait ressemblait à ça :
Code :
|
event.keyCode te donne le keyCode de la touche du clavier qui a été pressé.
37 et 39 sont respectivement les codes pour la flêche gauche et la flêche droite. tu trouveras tout les keyCode dans la rubrique "Keyboard Keys and Key Code Values" de l'aide de flash. T'as plus qu'à adapter à tes besoin, et relire le passage sur ce qui n'existe plus dans flash dans mon premier post.
Alors si je le remplace par:
varX=0;
varY=0;
varMax=5;
varSlow=0.2;
varFast=0.5;
//Accélérer
Character.onEnterFrame=function reportKeyDown(event:KeyboardEvent):void
{
if((event.keyCode == 39) && varX<varMax);{trace("fleche droite" );}
if((event.keyCode == 40) && varY<varMax);{trace("fleche bas" );}
if((event.keyCode == 37) && varY>varMax);{trace("fleche gauche" );}
if((event.keyCode == 38) && varX>varMax);{trace("fleche haut" );}
//Ralentir
if(varX>0){varX=varX-varSlow}
if(varY>0){varX=varX-varSlow}
if(varX<0){varX=varX+varSlow}
if(varY<0){varX=varX+varSlow}
//Faire bouger
Character._x=Character._x+varX
Character._y=Character._y+varY
}
Sa me donne les erreurs
Access of undefined Property varX(ou varY ou varSlow ou varFast)
Tu bosses sur quel version de flash ? Car la y'a une tonne de truc qui sont encore en AS2, j'ai peur de te balancer des truc en AS3 qui te soit inutile.
Je suis sur la plus récente (Je crois)
Adobe Flash Professionnal CS3 (9.0)
Message édité par jannewarman32 le 19-09-2007 à 14:01:52
Code :
|
Ton code devrais plus ressembler à ceci. Celui ci n'est pas bon, mais devrait te mettre sur la voie.
Par défaut un nouveau document est en as3.0 (à vérifier quand tu créer un nouveau document), le problème, c'est que la moitié de ton code est en AS2, et n'ai pas compris par le compilateur as3.
_x et _y n'existent plus en AS3. Tu oublies les point virgules à la suite de certaines instructions.
Il y a 854 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
