Se connecter / S'enregistrer
Votre question

Aide ActionScript 3.0

Tags :
  • character
  • Programmation
Dernière réponse : dans Programmation
19 Septembre 2007 01:32:31

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)

Autres pages sur : aide actionscript

19 Septembre 2007 02:21:57

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".

  1. function reportKeyDown(event:KeyboardEvent):void
  2. {
  3. trace("Key Pressed: " + String.fromCharCode(event.charCode) + " (character code: " + event.charCode + ")");
  4. }
  5. stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown);


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.
19 Septembre 2007 02:47:47

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 =/
Contenus similaires
19 Septembre 2007 03:27:02

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(KeyboardEvent.KEY_DOWN, reportKeyDown);

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 :

  1. function reportKeyDown(event:KeyboardEvent):void{
  2. if(event.keyCode == 37){
  3. trace("fleche gauche");
  4. }
  5. if(event.keyCode == 39){
  6. trace("fleche droite");
  7. }
  8. }
  9.  
  10. stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown);


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.
19 Septembre 2007 04:26:22

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)
19 Septembre 2007 12:43:41

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.


19 Septembre 2007 14:01:23

Je suis sur la plus récente (Je crois)

Adobe Flash Professionnal CS3 (9.0)
19 Septembre 2007 19:20:24

  1. function reportKeyDown(event:KeyboardEvent):void{
  2. // d'abord on calcul varX
  3. if(varX>0){varX=varX-varSlow}
  4. if(varY>0){varX=varX-varSlow}
  5. if(varX<0){varX=varX+varSlow}
  6. if(varY<0){varX=varX+varSlow}
  7.  
  8. if(event.keyCode == 37 && varX<varMax){
  9. trace("fleche gauche" );
  10. Character.x += varX; // on met ces lignes ici pour répondre au keycode 37, et non pas à n'importe le quel
  11. Character.y += varY;
  12. }
  13. if(event.keyCode == 39 && varY>varMax ){
  14. trace("fleche droite" );
  15. Character.x += varX;
  16. Character.y += varY;
  17. }
  18.  
  19. }
  20.  
  21. stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown);



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.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS