CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Flash/ActionScript]dépla cements clavier

Rkoopa
Rkoopa
Niveau 7
25 février 2006 à 15:08:55

Salut a Tous !

Bon, voilà depuis peu de temps je me suis lancé dans l´Action Script de Flash.
Langage qui semble bien adapté a mes attentes...

Ainsi, je me suis mis a travaillé ce langage, qui me parait plutôt simple lorsque je vois les lignes de C, venant d´habitués du codage...
J´ai appris a utiliser certaines conditions
(if, if else, & if else if ainsi que les ´ternaires´ --> j´ai compris comment utiliser ces dernieres, mais, encore du mal à les appliquer... disons que ca ne vient pas instentanément )
mais aussi les principales boucles ( while & for ) et encore les principaux events ( onPres onRelease onRollOver... etc... ) (onMouseDown,onMouseMove... )
Par contre j´ai ENORMEMENT, de mal avec onLoad & onEnterFrame //--> la je n´ai rien compris, si un gentil flasheur, a 5 minutes... :question:

- - - - -

Bon, voilà aujourd´hui j´ai eu l´envie, d´exploiter mes connaissances, car, si je ne m´entraine pas, je vais vite perdre le peu d´actionScript que je connais :-(

J´ai voulu, gerer le déplacement d´un clip via le clavier...
Moui, sans parler Script, avec mes connaissances, ceci me semble possible...

  • en francais*

Si touche(droite) est pressée
déplacer le clip de telle distance a droite.
Si touche(gauche) est pressée
déplacer le clip de telle distance a gauche
Si touche(haut) est pressée
déplacer le clip de telle distance en haut
Si touche(bas) est pressée
déplacer de telle distance le clip en bas

Jusque la tous me semble possible :-p
Si une fois cette base de crée pourquoi ne pas faire une variable ´vitesse´ ainsi, par la suite
on pourrat acceler ou ralentir la vitesse de déplacement du clip.
Autre chose, une petite question puisque de toute facon rien ne marche sur mon code ´voir plus bas´ Pourrat faire ´simplement´ de sorte, que si l´on appui a la fois sur haut et droite les deux touche soient pris en compte en meme temps donc déplacement en diagonal !? ?
(possible? surement, mais facilement :question: )

----

Donc je me suis mis a coder...
Dans un premier temps a réfléchir sur papier
puis sous Flash.

Voilà ce que ca donne !
PS :d) = je justifi pourquoi j´ai fais ceci ou cela.

----Code ActionScript----

if (Key.isDown(Key.LEFT))
:d) on m´a dit que les touches du clavier étaient utilisé de cette maniere // si pressement de la touche (gauche)

{
perso._x -= 5;
:d) perso étant le nom du clip a déplacer...
gauche; donc on retire 5 sur l´axe x
donc déplacement vers la gauche :-p

}

if (Key.isDown(Key.RIGHT))
:d) hop j´ai répété plusieurs fois la meme manipulation...
{
perso._x += 5;
}

if (Key.isDown(Key.UP))
{
perso._y -= 5;
}

if (Key.isDown(Key.DOWN))
{
perso._y += 5;
}

-----

Rkoopa
Rkoopa
Niveau 7
25 février 2006 à 15:10:45

Voilà. On m´a aussi conseillé de ne JAMAIS directement introduire le code sur un clip mais sur un calque réservé aux codes.
PS: Flash m´indique que mon script ne contient aucune erreure *heuresement dailleur*
Mais une fois l´essai lancé rien ne marche
:question:
Pouvez-vous m´aider ?

Merci d´avance a tous !

PS²: HS// quoi de neuf sur le forum ?

JustGTA
JustGTA
Niveau 9
25 février 2006 à 15:21:30

http://actionscript.org/french/index.shtml

fil_razorback
fil_razorback
Niveau 10
25 février 2006 à 16:00:45

Alors, tu as placé ton code sur la premiere frame de la timeline j´imagine, très bien.
Mets toi à la place de flash :
"-J´arrive sur la premiere frame : aucune touche n´est appuyée (Sauf si tu fais expres d´appuyer dès le premier centieme de seconde mais ca m´etonnerait que t´ai testé) donc je ne fais rien.
-Ah ben voilà j´ai fini"
Ce qui te manque c´est une instruction pour dire à flash de re-éxecuter ton code à chaque frame.
Ainsi il te faut :
this.onEnterFrame= function(){
//Ton code
}
le this fait juste référence à la scene.

Ensuite pour le déplacement avec gestion de plusieurs touches, c´est très simple, ça donne ceci :

perso.speed = 5;
this.onEnterFrame = function() {
if (Key.isDown(Key.LEFT)) {
perso.vx = -perso.speed;
}
if (Key.isDown(Key.RIGHT)) {
perso.vx = perso.speed;
}
if (Key.isDown(Key.UP)) {
perso.vy = -perso.speed;
}
if (Key.isDown(Key.DOWN)) {
perso.vy = perso.speed;
}
perso._x += perso.vx;
perso._y += perso.vy;
}

Rkoopa
Rkoopa
Niveau 7
25 février 2006 à 16:35:20

Merci :merci: Fil !
Vraiment merci !

J´ai décortiqué le code que tu m´a passé...
Mais je ne vois pas a quoi correspond ce V
if (Key.isDown(Key.UP)) {
perso.vy = -perso.speed;
vz ?? :question:
Soit je n´ai jamais appris a m´en servir...
soit j´ai oublier *y´a plus de chance pour que se soit ca :-p*

Autre problème/question... :p)
Il me semble avoir lu que toutes les touches du clavier ont un code particulier...
Existerait´il un rappel enfin quelque chose ou je pourrais ctrouver ce code ?
:merci: d´avance !

Autre problème *encore*
Si par exemple je veux maintenant, que mon clip change en fonction de la direction...
Comment pourrais-je faire ?
PS: a l´origine le clip que je souhaite faire bouger provient d´un Gif... :nah:
Merci d´avance ! :ok:

fil_razorback
fil_razorback
Niveau 10
25 février 2006 à 17:21:27

perso.vy c´est juste une variable contenue dans perso; j´aurai pu tout simplement mettre vy ou même vitessey

"Il me semble avoir lu que toutes les touches du clavier ont un code particulier...
Existerait´il un rappel enfin quelque chose ou je pourrais ctrouver ce code ?"
:d) Dans l´aide du logiciel, va voir dans la classe Key, il devrait y avir un lien à suivre ou quelque chose...

"Si par exemple je veux maintenant, que mon clip change en fonction de la direction...
Comment pourrais-je faire ? "
:d) Si ton clip est comme ça :
frame 1 => tourné vers la gauche
frame 2 => tourné vers la droite
frame 3 => tourné vers le haut
frame 4 => toutné vers le bas
Tu peux utiliser le code suivant :

perso.speed = 5;
this.onEnterFrame = function() {
if (Key.isDown(Key.LEFT)) {
perso.vx = -perso.speed;
perso.direction=1;
}
if (Key.isDown(Key.RIGHT)) {
perso.vx = perso.speed;
perso.direction=2;
}
if (Key.isDown(Key.UP)) {
perso.vy = -perso.speed;
perso.direction=3;
}
if (Key.isDown(Key.DOWN)) {
perso.vy = perso.speed;
perso.direction=4;
}
perso._x += perso.vx;
perso._y += perso.vy;
perso.gotoAndStop(perso.direction);
}

Rkoopa
Rkoopa
Niveau 7
25 février 2006 à 18:01:11

Merciii :merci:
Vraiment merci !

fil_razorback
fil_razorback
Niveau 10
25 février 2006 à 18:12:00

De rien, les questions sont posées intelligement et tu essaies de faire le code toi même, ça donne envie de répondre ;)

Rkoopa
Rkoopa
Niveau 7
27 février 2006 à 11:32:36

Salut all !

Heu :nah:
J´ai encore quelques petits problèmes...
Voilà, j´ai fini les déplacements.
Mais maintenant, j´aimerais bien m´occupper des collisions... :hap:
Comme pour les question précedentes
J´ecris d´abord a manière dont je pense qu´il faut faire, enfin qui pourrait marcher...

Donc déja, voilà je vais uploader quelques imges, ca sera, je pense plus simple :ok:

Voilà ce que j´ai fais pour le moment (pour les déplacements)
http://img164.imageshack.us/my.php?image=as5db.png

Donc je pense que:

Pour le mur se trouvant en haut ( mur_haut)
J´ai lu quelque part qu´il fallait utiliser:
hitTest

:question: ...comment ca marche ?

C´est sur cette partie, ou l´on utilise
hitTest que je bloque...
en tout cas, je pense que Si ceci est ´´vérifié´´

Alors, il faudra : perso._y -= vitesse;
Car le clip hero se déplacera de ´vitesse´ vers le bas, donc...
...non ?
Aie j´ai vraiment du mal avec ces collisions...
:snif:

Merci d´avance; ;- )
Rkoopa

Rkoopa
Rkoopa
Niveau 7
27 février 2006 à 13:41:21

...Ou petit y´a t´il autre moyen plus simple, que d´utiliser hitTest ?

fil_razorback
fil_razorback
Niveau 10
27 février 2006 à 17:28:55

Tu ferais mieux de faire un Tile Based Game :)

http://www.devamateur.be pour plus d´infos. Merci à Quintoff pour sa traduction du tuto de Tonypa :)

Rkoopa
Rkoopa
Niveau 7
27 février 2006 à 22:36:39

Merci :merci:
Désolé, pour le retard :-)
Tiens ca m´a l´air très interressant tout ca !
Aller vais voir ca plus en détails...

Rkoopa
Rkoopa
Niveau 7
05 avril 2006 à 19:32:14

Salut a tous, bon voilà je n´allais pas recreer un topic pour une question traitant du meme sujet que mes questions précédentes... :-)

Voici mon code pour les déplacements et les collisions sur les bords de l´animation:

---------//Action-Script//----------

var vitesse:Number = 5;
perso.onEnterFrame = function() {

posx = this._x;
posy = this._y;

if (Key.isDown(Key.DOWN)) {
perso._y += vitesse;
_root.perso.gotoAndPlay(2);
}
if (Key.isDown(Key.LEFT)) {
perso._x -= vitesse;
_root.perso.gotoAndPlay(18);
}
if (Key.isDown(Key.UP)) {
perso._y -= vitesse;
_root.perso.gotoAndPlay(34);
}
if (Key.isDown(Key.RIGHT)) {
perso._x += vitesse;
_root.perso.gotoAndPlay(50);
}

if (this._y<0) {
this._y = 0
}
if (this._y>400) {
this._y = 400;
}
if (this._x<0) {
this._x = 0;
}
if (this._x>493) {
this._x = 493;
}
}

Bon cela etait le code.
Ainsi, mon personnage peut se déplacer vers la gau
che, vers la droite, vers le haut, vers le bas, et en diagonale.

Mais j´aimerais, que le déplacement en diagonale ne se fasse pas !
Je voudrais que le joueur ne puisse se déplacer que vers la gauche la droite le haut et la bas. seulement.
Mais je ne sais comment faire...
Cela vient du fait que les 2 pressions de touche s´ajoutent, or je voudrais annuler celà.

Autre chose j´aimerais maintenant animer mes mouvement, j´ai réussis a faire de sorte que le personnage se tourne suivant la touche pressée.
Mais aussi, que l´animation s´arrete lorsque la touche n´est pas pressées.

Merci d´avance a tous !
Amicalement;
Rex-S.

luxregina
luxregina
Niveau 10
05 avril 2006 à 19:38:48

Il existe plusieur maniere de ne traiter qu´une seule condition a la fois ( touche [x] pressee )

Tu devrais rechercher l´operateur OR ( qui s´ecrit || ) mais je pense que dans ton cas, la meilleur maniere de proceder serait de passer par un switch case ( chercher la commande "switch" dans le dico AS de Flash, tu auras un exemple d´utilisation )

luxregina
luxregina
Niveau 10
05 avril 2006 à 19:41:11

une troisieme maniere serait de creer une fonction myKeyIsDown qui recupere la nature de la touche pressee et de gerer le deplacement a l´interieur de cette fonction ...

Bref, c´est ca le truc fun en programmation, c´est qu´il y a toujours plein de reponses differentes au meme probleme

Rkoopa
Rkoopa
Niveau 7
05 avril 2006 à 19:45:52

Merci, j´ai la chance de tomber sur LE flasheur du forum, quoi que Fil a l´air de faire du bon boulot :-)

luxregina
luxregina
Niveau 10
05 avril 2006 à 19:52:50

ha ! Fil est certainement beaucoup plus actif que moi , et au niveau de la frequentation du forum, et au niveau du code : ca doit faire 6 mois que j´ai pas ecrit une ligne de code :) et je suis bien content comme ca :)

luxregina
luxregina
Niveau 10
05 avril 2006 à 19:59:37

quoiqu´il en soit, si tu veux passer par les fonctions, je te conseille de regarder aussi a addListener (Key.addListener method), histoire de faire ca dans les regles de l´art ...mais dans ton cas, je pense qu´un Switch case sera le plus simple ...

fil_razorback
fil_razorback
Niveau 10
05 avril 2006 à 23:57:01

C´est un peu degueu mais ca marche :

done = false;
if (Key.isDown(Key.DOWN) and done != true) {
perso._y += vitesse;
_root.perso.gotoAndPlay(2);
done = true
}
if (Key.isDown(Key.LEFT) and done != true) {
perso._x -= vitesse;
_root.perso.gotoAndPlay(18);
done = true
}
if (Key.isDown(Key.UP) and done != true) {
perso._y -= vitesse;
_root.perso.gotoAndPlay(34);
done = true
}
if (Key.isDown(Key.RIGHT) and done != true) {
perso._x += vitesse;
_root.perso.gotoAndPlay(50);
done = true
}

Rkoopa
Rkoopa
Niveau 7
06 avril 2006 à 12:08:52

:merci: Fil

J´aimerais maintenant animer mes déplacements.
J´ai donc 4 mouvements, par directions.
Et je n´arrive pas a faire de sorte, que le personnage bouge uniquement si la touche est pressée, et qu´il s´arrete mais garde la meme direction lorsquee aucune touche n´est pressée...
Aïe, j´ai du mal...

Pouvez-vous m´aider ?
PS: j´ai mis dans mon clip perso, 4 clips representant les 4 mouvements donc sur 4 frame de perso.
sur chaque frame j´ai fais un stop();
Mais rien ne marche :-(

J´ai aussi essayer de faire tous les mouvements sur le meme clip. avec mon gotoAndPlay qui renvois au début du mouvement, etc. seulement, a chaque fois que la touche est pressée, hé bien, cela ramene au premier mouvement, donc ca ne l´anime pas, du moin qu´une fois que la touche n´est plus pressée...
:snif:

Pouvez vous m´aider ? :hap:
Merci d´avance ;- )

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment