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

Problème tout bête (de logique) en javascript

bonjourlordi
bonjourlordi
Niveau 10
11 août 2016 à 16:54:11

Bonjour

J'ai un problème en apparence tout simple mais qui me mange le cerveau depuis une demi heure.

En javascript j'essaie de créer une animation avec une setInterval qui a pour but de faire évoluer la couleur d'arrière plan de la page via document.style.background.

J'utilise pour cela trois variables qui vont être passées à la fonction rgb() en string

Le problème est que j'ai besoin que ces trois variables (r, g, b) EVOLUENT entre 0 et 255 avec des pas différents. Je créé pour cela une fonction change(x, step) qui doit augmenter la valeur de x si elle est inférieure ou égale à 255 et la diminuer si elle est supérieure ou égale à 255.

Et c'est là que mon cerveau explose. Car tout simplement une fois que x atteint 255, la fonction va le diminuer une fois puis l'augementer vu que sa valeur est inférieure à 255 et ceci en boucle.

Voici mon code :

function change(x, step) {

if (x <= 255) {
x += step;
}
if (x >= 255) {
x -= step;
}
return x;
}

La question est : Comment faire évoluer un compteur entre une rangée de valeurs ?

Je sais que c'est probablement tout bête comme problème mais ca me rend dingue car j'ai l'impression d'omettre quelque chose, bref j'ai besoin de votre aide.

:svp:

godrik
godrik
Niveau 30
11 août 2016 à 17:02:16
function change(x, step) {
  x += step;
  if (x > 255) {
    x=255
  }
  return x;
}

?
En passant, https://www.youtube.com/watch?v=LKnqECcg6Gw

bonjourlordi
bonjourlordi
Niveau 10
11 août 2016 à 17:19:03

Merci oui ca corrige le problème des valeurs supérieures à 255 causées par le pas

Mais j'aimerais que une fois à 255, x fasse le chemin inverse jusqu'à 0 et une fois à 0 qu'il reprenne jusqu'à 255 et ainsi de suite..
J'ai pensé à un while mais dans une fonction ca va être compliqué :(

Intéressant la vidéo

lokilok
lokilok
Niveau 17
11 août 2016 à 19:17:11

Soit t'as besoin d'une troisième variable qui indique si x doit monter en valeur ou baisser en valeur, soit tu changes la valeur de step (tu prends l'opposé) dès que x arrive à 255 ou à 0.

godrik
godrik
Niveau 30
11 août 2016 à 19:59:24

Ou plus simplement:
function change(x, step) { x += step; if (x > 255) { x=255 step = -step; } if (x < 0) { x=0 step = -step; } return x; }

bonjourlordi
bonjourlordi
Niveau 10
12 août 2016 à 15:22:05

Ca produit le même résultat, à savoir que les variables restent bloquées à 255... J'ai l'impression que ca va plus loin que ce que je pensais. :-(

http://pastebin.com/krawMT82
log : http://pastebin.com/2GYhB25c

lokilok
lokilok
Niveau 17
12 août 2016 à 15:33:57

C'est juste que le step ne change pas.

bonjourlordi
bonjourlordi
Niveau 10
12 août 2016 à 16:24:17

Ben j'ai l'impression qu'il manque quelque chose dans les conditions pour que ca marche. Je crois que je vais juste partir sur des while avec des un système de flag et faire ca pour les 3 variables, c'est dommage, j'aurais voulu avoir une fonction pour faire ca sans avoir autant de while que de variables à faire changer

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