Mon cahier d’exercices
"Auteur : Hagnoul Daniel"
Texte : v1.3.0 2012-12-20
Texte : v1.0.0 2010-06-23
L'affichage sera plus ou moins fluide en fonction de la puissance de votre ordinateur et de la version de votre navigateur. Internet Explorer 8 affichant les images PNG à sa façon.
Téléchargement ftp : dvjhDrop-1.2.0.zip
Téléchargement https : dvjhDrop-1.2.0.zip
/* * plugin dvjhDrop * Daniel Hagnoul * * Code v2.0.0 2012-12-20 * * Dessine dans un canvas et utilise requestAnimationFrame. * * Code v1.2.0 2011-06-30 * Code v1.1.0 2010-06-25 * Code v1.0.0 2010-06-12 * * Inspiré par Flocon (v1.0.2 2009-12-16 Daniel Hagnoul) * Flocon étant la version jQuery de : * --------------------------- * Titre: De la neige !!! * Réécrit par Spacefrog * Date: 12/2009 * "https://www.developpez.net/forums/d846042/webmasters-developpement-web/contribuez/decoration-noel-simulateur-chute-neige/" * L'auteur décline toutes responsabilités ! * --------------------------- * * dvjhDrop() utilise le générateur de nombre aléatoire * Alea de Johannes Baagøe -- baagoe@baagoe.com, 2010 * https://baagoe.com/en/RandomMusings/javascript/ * -------------------------- * * Usage, exemple fleur.html : * * <!doctype html> * <html lang="fr"> * <head> * <meta charset="utf-8"/> * <base href="https://danielhagnoul.developpez.com/"> * <style> * html, body { * height: 100%; * width: 100%; * overflow: hidden; * padding: 0px; * margin: 0px; * } * </style> * <script charset="utf-8" src="lib/random/alea.js"></script> * <script src="https://code.jquery.com/jquery-1.8.3.js"></script> * <script charset="utf-8" src="lib/plugin-dvjh/jquery.dvjhDrop-2.0.0.min.js"></script> * <script> * $(function(){ * $.dvjhDrop({ * bgImage: "images/ciel_bleu.jpg", * objetPNG: [ * "images/fleur1.png", * "images/fleur2.png", * "images/fleur3.png", * "images/fleur4.png", * "images/fleur5.png", * "images/fleur6.png", * "images/fleur7.png", * "images/fleur8.png" * ], * txtFinal: "Bonne fête" * }); * }); * </script> * </head> * <body> * </body> * </html> * * -------------------------- * Options disponibles * bgImage: "https://danielhagnoul.developpez.com/fondations/evenement/paysage_neige.jpg", * objetPNG: [], // array des URL des images PNG qui tomberont. * objetTailleMax: 133, // PNG height 133 * objetTailleMin: 30, * vXMax: 0.09, // vitesse de déplacement max sur axe X * vXMin: 0.06, * vYMax: 0.22, // vitesse de déplacement max sur axe Y * vYMin: 0.08, * nbObjet: 60, // nombre d'objets * dropDelay: 20000, // 20s * txtFinal: "Joyeux Noël", * txtFinalCss:{ * position: "fixed", * bottom: "12px", * right: "12px", * color: "blue", * fontFamily: "cursive", * fontSize: "8em", * fontWeight: "bold", * zIndex: "9999" * } */ "use strict"; ( function( $ ){ $.dvjhDrop = function( options ){ var opts = $.extend( true, {}, $.dvjhDrop.defaults, options ), requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame, cancelAnimationFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.msCancelAnimationFrame, requestId = 0, objets = new Array( opts.nbObjet ), random = new Alea(), bgImg = new Image(), canvas = document.createElement( "canvas" ), ctx = canvas.getContext( "2d" ), docWidth = canvas.width = document.documentElement.clientWidth, docHeight = canvas.height = document.documentElement.clientHeight, animationStartTime; canvas.style.position = "fixed"; canvas.style.top = 0; canvas.style.left = 0; canvas.style[ "pointerEvents" ] = "none"; bgImg.src = opts.bgImage; ctx.drawImage( bgImg, 0, 0, docWidth - 1, docHeight - 1 ); document.body.appendChild( canvas ); function Drop( url, i ){ // positionenement aléatoire de l'objet this.xp = random() * ( docWidth - opts.objetTailleMin ); this.yp = random() * docHeight; // vitesse de déplacement this.vx = random() * ( opts.vXMax - opts.vXMin ) + opts.vXMin; this.vy = random() * ( opts.vYMax - opts.vYMin ) + opts.vYMin; // taille de l'objet, elle détermine son opacité et son zIndex this.height = random() * ( opts.objetTailleMax - opts.objetTailleMin ) + opts.objetTailleMin; // amplitude du déplacement sur X this.am = random() * this.height; this.dx = 0; this.dy = 0; this.objImage = new Image(); this.objImage.src = url; ctx.drawImage( this.objImage, Math.floor( this.xp ), Math.floor( this.yp ) ); } Drop.prototype.draw = function( deltaT ){ this.dy = this.height * this.vy; this.yp += this.dy; if ( this.yp > docHeight - opts.objetTailleMin ){ this.xp = random() * ( docWidth - opts.objetTailleMin ); this.yp = 0; this.vx = random() * ( opts.vXMax - opts.vXMin ) + opts.vXMin; this.vy = random() * ( opts.vYMax - opts.vYMin ) + opts.vYMin; } this.dx += this.vx; ctx.drawImage( this.objImage, Math.floor( this.xp + this.am * Math.sin( this.dx ) ), Math.floor( this.yp ) ); }; for ( var i = 0; i < opts.nbObjet; i++ ){ objets[ i ] = new Drop( opts.objetPNG[ Math.floor( random() * opts.objetPNG.length ) ], i ); } function animate( time ){ var deltaT = time - animationStartTime; if ( ( deltaT > opts.dropDelay ) && ( requestId != 0 ) ){ cancelAnimationFrame( requestId ); requestId = 0; $("<div/>",{ "html" : opts.txtFinal, "css" : opts.txtFinalCss }).appendTo("body"); } else { ctx.drawImage( bgImg, 0, 0, docWidth - 1, docHeight - 1 ); for ( var i in objets ){ objets[ i ].draw( deltaT ); } requestId = requestAnimationFrame( animate ); } } animationStartTime = Date.now(); requestId = requestAnimationFrame( animate ); }; $.dvjhDrop.defaults = { "bgImage" : "https://danielhagnoul.developpez.com/images/paysage_neige.jpg", // 1280 * 1024 "objetPNG" : [], // array des URL des images PNG qui tomberont. "objetTailleMax" : 133, // PNG 133 * 100 "objetTailleMin" : 30, "vXMax" : 0.09, // vitesse de déplacement max sur axe X "vXMin" : 0.06, "vYMax" : 0.22, // vitesse de déplacement max sur axe Y "vYMin" : 0.08, "nbObjet" : 60, // nombre d'objets "dropDelay" : 20000, // 20s "txtFinal" : "Joyeux Noël", "txtFinalCss" : { "position" : "fixed", "bottom" : "12px", "right" : "12px", "color" : "blue", "fontFamily" : "cursive", "fontSize" : "8em", "fontWeight" : "bold", "zIndex" : "9999" } }; })(jQuery);
Veuillez poser vos questions
techniques sur les forums DVP,
s'il vous plait.
Avertissement solennel
Autodidacte en informatique, l’auteur a tous les défauts de sa qualité. Si vous vous inspirez, copiez ou pire utilisez le contenu de cette page, vous êtes téméraire, inconscient du danger !
Reconnaissant avoir été dûment informé, vous déchargez l’auteur et à fortiori l’hébergeur du site de toute responsabilité dans les graves dégâts que vous causerez sûrement !
Vous n'aurez jamais fini d'apprendre la programmation, aussi apprenez à apprendre en vous amusant.
Except where otherwise noted, content on this site is licensed under a Creative Commons License : Attribution-Share Alike 2.0 Belgium
Mention obligatoire : "Auteur : Hagnoul Daniel (https://www.developpez.net/forums/u285162/danielhagnoul/)"