Negi

by mmis1000

HTML

<a...

JavaScript

void((function (window, document, style, undefined) {
    var render = {};
    (function (render) {
        var requestAnimationFrame = (window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(a){return setTimeout(a, 50);}).bind(window);
        var cancelAnimationFrame = (window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitcancelAnimationFrame || window.mscancelAnimationFrame || window.clearTimeout).bind(window);
        var _renderList = {};
        var _renderCount = 0;
        var _pageStartTime = -1;
 
        function _renderThreadFactory(id, renderer) {
            function sRenderThread(tick) {
                if (_renderList[id].playing) {
                    renderer(tick + _renderList[id].iShift);
                    if(!_renderList[id]){return;}
                    _renderList[id].frameId = requestAnimationFrame(sRenderThread);
                    _renderList[id].lastTime = tick;
                }
            }
            return sRenderThread;
        }
        render.setRender = function setRender(renderThread, shift) {
            var renderNow = _renderCount, renderThread;
            shift = shift || 0;
            _renderCount++;
            _renderList[renderNow] = {
                frameId: 0,
                playing: true,
                thread: renderThread,
                lastTime: 0,
                shift: shift,
                iShift: shift - (Date.now() - _pageStartTime)
            };
            renderThread = _renderThreadFactory(renderNow, renderThread);
            requestAnimationFrame(renderThread);
            return renderNow;
        };
        render.clearRender = function clearRender(id) {
            if (_renderList[id] !== undefined) {
                if (_renderList[id].playing) {
                    cancelAnimationFrame(_renderList[id].frameId);
                }
                _renderList[id] =...