Your Roll

Рейтинг ролевых ресурсов. Каталог ролок. Полезные инструменты для администраторов ролевых игр.


Вы не подключены. Войдите или зарегистрируйтесь

Предыдущая тема Следующая тема Перейти вниз  Сообщение [Страница 1 из 1]

Космо

Космо
Я сквозь ткань миров проходящий странник, Я СКВОЗНЯЯЯЯЯК!!! ХДД
Конечно, ещё рано до нового года, но всё равно)

Этот скрипт создаёт красивые крупные падающие снежинки, причём совсем не нагружает сайт разными картинками.

Сам код уже много-много раз тырился с хабра, но так как он представляет в первую очередь научную ценность, на форумах не распространился)))

Сам скрипт вот:

Код:
(function () {
    var d = false;
    if (document.createElement("canvas").getContext)
        if (document.readyState === "complete") j();
        else window.addEventListener("DOMContentLoaded", j, d);
    var e = Math.PI / 180,
        r = Math.sqrt(3) / 2,
        f = [],
        m = 64,
        q = 500,
        o = 20,
        c = function (a) {
            return Math.floor(a * Math.random())
        }, b, a, h, g = d;
 
    function j() {
        b = document.createElement("canvas");
        b.style.position = "fixed";
        b.style.top = "0px";
        b.style.left = "0px";
        b.style.zIndex = "0";
        document.body.insertBefore(b, document.body.firstChild);
        a = b.getContext("2d");
        i();
        h = setInterval(k, q);
        setInterval(l, m);
        window.addEventListener("resize", i, d)
    }
 
    function i() {
        g = true;
        b.width = document.body.offsetWidth;
        b.height = window.innerHeight;
        a.strokeStyle = "#0066CC";
        a.fillStyle = "white"
    }
 
    function n(e, b, d, c) {
        a.save();
        a.translate(e, b);
        p(c, 0, Math.floor(r * b), d);
        a.fill();
        a.stroke();
        a.restore()
    }
 
    function p(c, f, g, d) {
        a.save();
        a.beginPath();
        a.translate(f, g);
        a.moveTo(0, 0);
        b(c);
        a.rotate(-120 * e);
        b(c);
        a.rotate(-120 * e);
        b(c);
        a.closePath();
        a.restore();
 
        function b(c) {
            a.save();
            if (c == 0) a.lineTo(d, 0);
            else {
                a.scale(1 / 3, 1 / 3);
                b(c - 1);
                a.rotate(60 * e);
                b(c - 1);
                a.rotate(-120 * e);
                b(c - 1);
                a.rotate(60 * e);
                b(c - 1)
            }
            a.restore();
            a.translate(d, 0)
        }
    }
 
    function k() {
        var b = 2,
            d = 10 + c(90),
            a = (document.body.offsetWidth - 964) / 2,
            e = c(2) == 0 ? c(a) : a + 964 + c(a),
            g = window.pageYOffset;
        f.push({
            x: e,
            y: g,
            vx: 0,
            vy: 3 + c(3),
            size: d,
            order: b
        });
        f.length > o && clearInterval(h)
    }
 
    function l() {
        a.clearRect(0, 0, b.width, b.height);
        for (var j = b.height, h = 0; h < f.length; h++) {
            var e = f[h];
            e.y += e.vy;
            e.x += e.vx;
            if (e.y > j) e.y = 0;
            if (g) {
                var i = (b.width - 964) / 2;
                e.x = c(2) == 0 ? c(i) : i + 964 + c(i)
            }
            n(e.x, e.y, e.size, e.order);
            if (c(4) == 1) e.vx += (c(11) - 5) / 10;
            if (e.vx > 2) e.vx = 2;
            if (e.vx < -2) e.vx = -2
        };
        if (g) g = d
    }
})();

Предыдущая тема Следующая тема Вернуться к началу  Сообщение [Страница 1 из 1]

Права доступа к этому форуму:
Вы не можете отвечать на сообщения