IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Animation avec javascript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 79
    Par défaut Animation avec javascript
    J'ai un exercice à faire en html5, je dois faire déplacer un ovni dans un fond d'écran aléatoirement. Mon problème est quand je fais ma boucle qui va faire déplacer mon ovni, il n'y a plus rien qui s'affiche dans ma page web.

    voici mon code, peut-être que c'est la boucle infinie qui fait tout plenter ?

    voici le code qui doit faire déplacer l'ovni :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    while(true)
    		{
     
    			var dt = new Date();
    			dt.setTime(dt.getTime() + 500);
    			while (new Date().getTime() < dt.getTime());
     
    			if(Math.floor((Math.random()* 1))) > 0)
    			{
    				if(xx + 5 < MAXLARGEUR)
    					xx = xx + 5;
    			}
    			else
    			{
    				if(xx - 5 > 0)
    					xx = xx - 5;
    			}
     
    			if(Math.floor((Math.random()* 1))) > 0)
    			{
    				if(yy + 5 < MAXHAUTEUR)
    					yy = yy + 5;
    			}
    			else
    			{
    				if(yy - 5 > 0)
    					yy = yy - 5;
    			}
     
    			ctx.drawImage(img,xx,yy);
    		}
    voici tout le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>Exercice Html5 et css3</title>
    	</head>
    <body>
    	<canvas id="MonCanVas" width="250" height="350"></canvas>
    	<script>
     
    		var xx = 30;
    		var yy = 30;
    		var MAXLARGEUR = 250;
    		var MAXHAUTEUR = 350;
    		var i = 0;
    		var j = 0;
    		var h = 115;
    		var l = 250;
    		var y = 0;
    		var x = 0;
    		var img = new Image();
    		img.src = "images/ovni.png";
     
    		var c = document.getElementById("MonCanVas");
    		var ctx = c.getContext("2d");
    		var grd = ctx.createLinearGradient(0,0,0,350);
     
    		grd.addColorStop(0,"black");
    		grd.addColorStop(1,"royalblue");
     
    		ctx.fillStyle=grd;
    		ctx.fillRect(0,0,250,350);
    		ctx.fillStyle="#FFFFFF";
     
    		while(i < 3)
    		{
    			while(j < 2)
    			{
    				y = Math.floor((Math.random()* (h - ( h - 114) + 1)) + (h - 114));
    				x = Math.floor((Math.random()* (250 - 1 + 1))+1);
    				ctx.beginPath();
    				ctx.arc(x,y,Math.floor((Math.random()* (3 - 1 + 1))+1),0,2*Math.PI);
    				ctx.fill();
    				j = j + 1;
    			}
    			j = 0;
    			h = h + 115;
    			i = i + 1;
    		}
     
    		while(true)
    		{
     
    			var dt = new Date();
    			dt.setTime(dt.getTime() + 500);
    			while (new Date().getTime() < dt.getTime());
     
    			if(Math.floor((Math.random()* 1))) > 0)
    			{
    				if(xx + 5 < MAXLARGEUR)
    					xx = xx + 5;
    			}
    			else
    			{
    				if(xx - 5 > 0)
    					xx = xx - 5;
    			}
     
    			if(Math.floor((Math.random()* 1))) > 0)
    			{
    				if(yy + 5 < MAXHAUTEUR)
    					yy = yy + 5;
    			}
    			else
    			{
    				if(yy - 5 > 0)
    					yy = yy - 5;
    			}
     
    			ctx.drawImage(img,xx,yy);
    		}
    	</script>
    </body>
    </html>

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    il te faut utiliser la méthode setTimeout ou setInterval pour permettre le redraw de ton canvas.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 183
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Bonjour,
    il te faut utiliser la méthode setTimeout ou setInterval pour permettre le redraw de ton canvas.
    non requestAnimationFrame

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Citation Envoyé par arnogues Voir le message
    non requestAnimationFrame
    tout à fait autant prendre de bonnes habitudes tout de suite même si setTimeout est encore plus universel, mais nul doute que window.requestAnimationFrame ne tardera pas à le devenir.

Discussions similaires

  1. Animation avec Javascript
    Par L'aigle de Carthage dans le forum jQuery
    Réponses: 7
    Dernier message: 04/07/2014, 15h11
  2. Animation avec JavaScript
    Par webamon dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/03/2013, 22h33
  3. Animations avec différents objet
    Par Mathieu.J dans le forum OpenGL
    Réponses: 6
    Dernier message: 09/06/2004, 14h18
  4. Réponses: 4
    Dernier message: 27/04/2004, 14h45
  5. Réponses: 2
    Dernier message: 14/01/2004, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo