Tutorial: Gadget - Schnee fallen lassen

Donnerstag, 5. Dezember 2013

Howdie!
Da ich gestern meinen Blog The Call of Freedom & Love Wintertauglich gemacht habe zeige ich euch heute wie ihr Schnee fallen lassen könnt :)


 Übrigens sehr einfach ;)



Anleitung:
Geht auf Layout und fügt irgendwo, wo ihr wollt, ein HTML/Javascript-Gadget ein.
Fügt dann das hier ein;
<script language="JavaScript">
// Author: Yurij Gera
// TODO: make @media print... work for Mozilla and Opera

var SnowCount     = exAutoCalculate();
var SnowMinSize   = 12;   // Minimum Snow-Font Size [Pixel]
var SnowMaxSize   = 28;   // Maximum Snow-Font Size [Pixel]
var SnowMinYSpeed = 0.5;  // Maximum Y Speed [Pixel/Frame]
var SnowMaxYSpeed = 2.5;  // Maximum Y Speed [Pixel/Frame]
var SnowMinXSpeed = 0.05; // Minumum Radial Speed [Radian/Frame]
var SnowMaxXSpeed = 0.15; // Maximum Radial Speed [Radian/Frame]
var SnowMinXDelta = 10;   // Minimum X Delta [Pixel]
var SnowMaxXDelta = 20;   // Maximum X Delta [Pixel]
var SnowMoveDelay = 25;   // Delay [Milliseconds]
var SnowColors    = ['#BBBBBB', '#DDDDDD', '#FFFFFF', '#BBBBFF']; // Snow Colors [Array]

exSnowInit();

function exSnowInit() {
 SnowMoveDelay = 25; // Delay [Milliseconds]
 exAddEvent(window, 'load', exSnowStart);
 exAddEvent(window, 'resize', exSnowRefresh);
 document.createStyleSheet().cssText = "@media print {.exSnowClass { DISPLAY: none; }}"; // IE only
}

function exAutoCalculate() {
 var start = new Date();
 for (var i = 0; i < 50000; i++) {
  Math.random();
 }
 var end = new Date();
 var delta = end.valueOf() - start.valueOf();
 var EstimatedSnowCount = Math.min(Math.floor(10000 / delta), 500);
 if (navigator.userAgent.match(/Opera/)) EstimatedSnowCount *= 0.5; // Hot fix opera
 return EstimatedSnowCount;
}

function exRandom(Min, Max, Natural) {
 if (typeof Natural == 'undefined')
  Natural = false;
 if (Natural) {
  return Math.floor(Min + (Max - Min + 0.999999) * Math.random());
 }
 else
  return Min + (Max - Min) * Math.random();
}

function exSnowStart() {
 Snow = new Array();
 for (i = 0; i < SnowCount; i++) {
  var e = document.createElement("span");
  e.className = 'exSnowClass';
  e.style.fontFamily = 'Times';
  e.style.fontSize = (SnowMinSize + Math.floor((SnowMaxSize - SnowMinSize) * Math.random())) + 'px';
  e.style.color = SnowColors[exRandom(0, SnowColors.length-1, true)];
  e.style.cursor = 'default';
  e.style.position = 'absolute';
  e.onselectstart = function () { return false; };
  var t = document.createTextNode("*");
  e.appendChild(t);
  Snow[i] = document.body.appendChild(e);
 }
 exSnowRefresh();
 exSnowMove();
}

function exSnowRefresh() {
 SnowBoxWidth = document.body.clientWidth;
 SnowBoxHeight = document.body.clientHeight;
 for (i = 0; i < Snow.length; i++) {
  var e = Snow[i];
  e.YSpeed = exRandom(SnowMinYSpeed, SnowMaxYSpeed);
  e.XSpeed = exRandom(SnowMinXSpeed, SnowMaxXSpeed);
  e.XMaxDelta = exRandom(SnowMinXDelta, SnowMaxXDelta);
  e.XDelta = Math.PI * Math.random(); // Stored Radial Delta (Radian)
  e.X = exRandom(SnowMaxXDelta, SnowBoxWidth - SnowMaxXDelta - SnowMaxSize);
  e.Y = exRandom(0, SnowBoxHeight - SnowMaxSize);
  e.style.left = e.X + 'px';
  e.style.top = e.Y + 'px';
 }
}

function exSnowMove() {
 for (i = 0; i < Snow.length; i++) {
  with (Snow[i]) {
   Y = (Y + YSpeed < SnowBoxHeight - SnowMaxSize) ? Y + YSpeed : 0;
   XDelta += XSpeed;
   style.left = X + Math.sin(XDelta) * XMaxDelta + 'px';
   style.top = Y + 'px';
  }
 }
 setTimeout("exSnowMove()", SnowMoveDelay);
}

function exAddEvent(o, e, f) {
 if (typeof o.addEventListener != 'undefined')
  o.addEventListener(e, f, false);
 else if (typeof o.attachEvent != 'undefined')
  o.attachEvent("on" + e, f);
 else
  return false;
 return true;
}</script>

Änderbar:

Wenn ihr größere Schneeflocken haben wollt, ändert diese Zahl.
Wenn ihr wollt das der Schnee schneller fällt, änder diese Zahl.
Wenn ihr wollt das der Schnee weit nach rechts und links schwenkt, änder diese Zahlen.

Kommentare:

  1. Vielen Dank für diese Informationen. Ich hoffe du wirst diesen Blog noch weiterschreiben! Ich habe bis jetzt einiges von dir umgesetzt und der Schnee sieht richtig toll aus.
    Ich habe mir erlaubt auch zu erwähnen woher ich diese Möglichkeit gefunden habe. Hoffentlich hast du nichts dagegen.
    http://123design-me.blogspot.de/
    Dir eine wunderschöne Adventszeit und liebe Grüße
    Kirsi

    AntwortenLöschen
  2. Perfekt! Du bist ein Engel! Danke so sehr!

    AntwortenLöschen