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

Changer de map en Flash

Deltrex
Deltrex
Niveau 7
23 décembre 2004 à 21:00:18

:salut: J´ai un priblème en Flash...
J´ai crer une petite map avec un rond déplaçable avec les flèches du clavier. J´ai mis ce code dans mon rond :
if ( this._x=550) {
sol.gotoAndStop(2);
this.gotoAndStop(2);
}
sachant que 550 x est la limite droite de ma map et que sol est... mon sol et this, mon rond. Dans sol(1) et ( 2) jai mi le code Stop();
Et lorsque je passe la limite de la map rien ne se passe !

Deltrex
Deltrex
Niveau 7
24 décembre 2004 à 01:14:21

oh lala ya personne pour m´aidez :snif: je pleur

techslash
techslash
Niveau 8
24 décembre 2004 à 07:37:44

heum... fait longtemps j´ai pas touché à FLASH mais tu peux toujours essayer...

_root.sol.gotoAndStop(2);

au lieu de

sol.gotoAndStop(2);

NaN
NaN
Niveau 5
26 décembre 2004 à 20:20:10

je ne sais pas si ton problème vient de là mais tu ferais mieux de mettre ´(this._x>=550)´
et si _root.sol ne fonctionne pas essaye _parent.sol; car en effet ton script ne peut pas fonctionner avec sol.gotoAndStop(2); car cela voudrait dire que ta map est comprise dans le symbole de ton rond.

zaxcitrop
zaxcitrop
Niveau 7
26 décembre 2004 à 22:37:56

Ah! je comprend pas :lol: :rire:

techslash
techslash
Niveau 8
27 décembre 2004 à 07:30:14

Quand tu places des choses dans une scène FLASH, il se forme une espèce de hiérarchie.

Supposons que j´ai ma scène.

Sur ma scène je mets un movie clip nommé clip1 et un autre clip nommé clip2.

Dans mon movie clip nommé clip1, j´ai un autre movie clip que nous appellerons iclip.

Si je veux faire un morceau de code à l´intérieur de iclip qui doit affecter, par exemple, clip2, je ne peux PAS faire, toujours par exemple:

clip2.action(paramètres);

Pourquoi ? Tout simplement parce que iclip et clip2 ne sont pas sur le même niveau ( iclip est dans clip1 qui est sur la scène alors que clip2 est directement sur la scène).

Pour solutionner ce problème, tu dois entrer le chemin complet pour atteindre clip2:

_root.clip2.action(paramètres);

Ici, _root a pour objectif d´indiquer qu´on commence sur la scène ( ´root´ c´est de l´anglais pour ´racine´) et clip2 indique qu´on désire travailler sur ce clip qui est sur la scène.

Inversement, si, à partir de code DANS clip2, on voulait faire une action qui affecte iclip, on devrait faire:

_root.clip1.iclip.action(paramètres);

Parce que, ici, on part de la scène, on entre dans clip1 et on entre dans iclip qui est dans clip1.

--

En ce qui concerne le this._x > = 550, eh beh, le symbole > = signifie plus grand ou égal. Le problème c´est que ton personnage bouge sur la map à une certaine vitesse. Si, par exemple, tu changes sa valeur de _x de 8 à chaque frame lorsque la flèche de droite est enfoncée, la coordonnée _x du personnage augmente de 8 à chaque frame. Supposons que le personnage commence est à 530. Après une frame il sera à 538, ensuite il passera à 546 et, finalement, il arrivera à 554. La valeur de _x n´est donc, pour ce mouvement en particulier, JAMAIS égale à 550. Ainsi, la map ne peut pas changer.

De plus, je crois bien que la syntaxe

this._x = 550

Est entièrement incorrecte de toute façon. Ça fait un moment que j´ai pas fait de FLASH mais, de mémoire, le symbole = représente un assignation alors que le symbole == représente la comparaison d´égalité. Exemple:

this._x = 100;

Après cette ligne, la valeur de _x est de 100. Ainsi,

if(this._x = 100)

N´est jamais vérifié car, à chaque fois que cette ligne est lancée, _x devient égal à 100 et le if n´a aucun effet.

Parallèlement,

if(this._x == 100)

Compare la valeur de _x à 100 et, si _x est en effet 100, le test est vérifié et le contenu du if est alors éxecuté.

En d´autres mots, le symbole = sert à donner une valeur à une variable alors que == sert dans les comparaisons ( notamment dans les if).

Bonne chance

Deltrex
Deltrex
Niveau 7
27 décembre 2004 à 16:09:30

oulala jy comprend rien...
1- est-ce que mon sol devrait etre un clip ? car en ce moment, le seul clip que j´ai, c´est mon rond...

2- j´ai mis ce code:
if ( this._x > 300) {
_root.sol.gotoAndStop(2);
}
est-ce qu´il faut que je rajoute:
if ( this._x > 300) {
_root.sol.gotoAndStop(2);
_this.gotoAndStop(2);
}

3- ou dois-je mettre les stop(); ?
sachant que jai 2 calque ( sol et vincent...(vincent es mon rond lol))

4- je crois que mon fichier . fla pourrais etre utile car sa marche carrément pas...
:d) www.ifrance.com/20100200/owner.fla :g)

Deltrex
Deltrex
Niveau 7
27 décembre 2004 à 16:10:01

http://www.ifrance.com/20100200/owner.fla

techslash
techslash
Niveau 8
27 décembre 2004 à 20:03:53

Je n´ai malheureusement pas FLASH dans le moment ( quand je disais que ça fait longtemps que j´en ai fait)...

Cela dit, je te suggère d´essayer ça:

Fait une movie clip que l´on appellera " sol", met deux frames dans le clip. Chaque frame doit contenir un dessin du plancher qui apparaitra pour deux maps différentes. Chaque frame doit comporter l´action Stop(); -- ( ou peut-être stop(); je ne me souviens pas s´il faut une majuscule ou non, tu devrais pouvoir vérifier dans FLASH)

Met sol sur ta scène.

Ajoute une calque pour dessiner par-dessus sol.

Crée une nouveau movie clip que nous appellerons " bonhomme".

Dans bonhomme, fait une animation d´un personnage qui marche ( ou met juste une boule ou un rond, c´est sans importance).

Ajoute ton code pour faire bouger bonhomme ( comme tu sembles avoir déjà réussi ça, je n´entrerai pas dans les détails ici).

Je te suggère quand même une méthode à adopter pour le mouvement, elle vient d´un tuto sur http://www.flashkit.com

Sur ta scène, clique sur le movie clip bonhomme ( simple click, n´entre pas dans le movie clip) et ajoute l´actionscript suivant:

onClipEvent(load) / / On joue le code lorsque le clip est loadé
{

/ / On choisit ici la vitesse
vitesse = 10;

}

onClipEvent(enterFrame) / / On joue le code à chaque fois que le clip entre une nouvelle frame
{

if ( Key.isDown(Key.RIGHT)) / / Flèche droite
{
this._x+=vitesse;
}
else if ( Key.isDown(Key.LEFT)) / / Flèche gauche
{
this._x-=vitesse;
}

if ( Key.isDown(Key.DOWN)) / / Flèche du bas
{
this._y+=vitesse;
}
else if ( Key.isDown(Key.UP)) / / Flèche du haut
{
this._y-=vitesse;
}

}

Cette méthode est efficace, je te laisse choisir de l´utiliser ou non à partir d´ici.

Une fois le mouvement implémenté, retourne dans l´actionscript que tu viens de modifier et ajoute, dans le bloc onClipEvent(enterFrame)...

onClipEvent ( enterFrame)
{
/ / On suppose que le code de mouvement que je viens de te présenter est ici

if(this._x>=550) / / Ici on suppose que ta scène est large de 550, si tu as changé la taille de la scène, il faut changer la valeur
{
_root.sol.gotoAndStop(2);
_this._x = 5;
}

}

Normalement, si tu bouges bonhomme jusqu´à la droite de ta scène, la map va changer et bonhomme va se retrouver à gauche.

techslash
techslash
Niveau 8
27 décembre 2004 à 20:05:11

Bon le forum a merdé un peu avec les espaces alors si tu fais un copier coller du code, assure toi qu´il n´y a pas d´espace entre les / / parce que sinon FLASH considère que c´est du code et pas des commentaires. Or, s´il fait ça, il va planter.

techslash
techslash
Niveau 8
27 décembre 2004 à 21:25:34

Oups, je voulais dire...

if(this._x>=550) / / Ici on suppose que ta scène est large de 550, si tu as changé la taille de la scène, il faut changer la valeur
{
_root.sol.gotoAndStop(2);
this._x = 5;
}

Deltrex
Deltrex
Niveau 7
28 décembre 2004 à 00:24:26

:snif2:
J´ai suivi toutes tes instructions à la lettre et puis lorsque j´arrive à la limite de ma map, le perso revien vers la gauche mais le sol lui ne change pas !

Deltrex
Deltrex
Niveau 7
28 décembre 2004 à 19:14:48

:snif2: sa marche pas encore !
Es-tu la TechSlash ?

Deltrex
Deltrex
Niveau 7
28 décembre 2004 à 20:24:44

:-p Je l´ai trouvé ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fallait mettre this._parent.sol.gotoAndStop(2);
je sais pas pourquoi mais j´ai réussi ! !!!!!!!!!!
Le jeu de l´année 2005 va bientot sortir ! !!!!!!!

zaxcitrop
zaxcitrop
Niveau 7
29 décembre 2004 à 04:11:59

TechSlash
je te comprend presseque :lol: :rire:

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