|
|
@ -962,9 +962,11 @@ var TextLayerBuilder = function textLayerBuilder(textLayerDiv) { |
|
|
|
var textLayerDiv = this.textLayerDiv; |
|
|
|
var textLayerDiv = this.textLayerDiv; |
|
|
|
var renderTimer = null; |
|
|
|
var renderTimer = null; |
|
|
|
var renderingDone = false; |
|
|
|
var renderingDone = false; |
|
|
|
|
|
|
|
var renderInterval = 0; |
|
|
|
|
|
|
|
var resumeInterval = 500; // in ms
|
|
|
|
|
|
|
|
|
|
|
|
// Render the text layer, one div at a time
|
|
|
|
// Render the text layer, one div at a time
|
|
|
|
var renderTextLayer = function textLayerRender() { |
|
|
|
function renderTextLayer() { |
|
|
|
if (textDivs.length === 0) { |
|
|
|
if (textDivs.length === 0) { |
|
|
|
clearInterval(renderTimer); |
|
|
|
clearInterval(renderTimer); |
|
|
|
renderingDone = true; |
|
|
|
renderingDone = true; |
|
|
@ -980,21 +982,16 @@ var TextLayerBuilder = function textLayerBuilder(textLayerDiv) { |
|
|
|
(textDiv.dataset.textLength - 1)) + 'px'; |
|
|
|
(textDiv.dataset.textLength - 1)) + 'px'; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
renderTimer = setInterval(renderTextLayer, 0); |
|
|
|
renderTimer = setInterval(renderTextLayer, renderInterval); |
|
|
|
|
|
|
|
|
|
|
|
var scrollTimer = null; |
|
|
|
|
|
|
|
if (window.onscroll) |
|
|
|
|
|
|
|
var oldScrollHandler = window.onscroll; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Stop rendering when user scrolls. Resume after XXX milliseconds
|
|
|
|
// Stop rendering when user scrolls. Resume after XXX milliseconds
|
|
|
|
// of no scroll events
|
|
|
|
// of no scroll events
|
|
|
|
window.onscroll = function textLayerOnScroll() { |
|
|
|
var scrollTimer = null; |
|
|
|
if (oldScrollHandler) |
|
|
|
function textLayerOnScroll() { |
|
|
|
oldScrollHandler.apply(window, arguments); |
|
|
|
if (renderingDone) { |
|
|
|
|
|
|
|
window.removeEventListener('scroll', textLayerOnScroll, false); |
|
|
|
// This avoids handler wrapper bloat
|
|
|
|
return; |
|
|
|
if (renderingDone) |
|
|
|
} |
|
|
|
window.onscroll = oldScrollHandler; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Immediately pause rendering
|
|
|
|
// Immediately pause rendering
|
|
|
|
clearInterval(renderTimer); |
|
|
|
clearInterval(renderTimer); |
|
|
@ -1002,10 +999,12 @@ var TextLayerBuilder = function textLayerBuilder(textLayerDiv) { |
|
|
|
clearTimeout(scrollTimer); |
|
|
|
clearTimeout(scrollTimer); |
|
|
|
scrollTimer = setTimeout(function() { |
|
|
|
scrollTimer = setTimeout(function() { |
|
|
|
// Resume rendering
|
|
|
|
// Resume rendering
|
|
|
|
renderTimer = setInterval(renderTextLayer, 0); |
|
|
|
renderTimer = setInterval(renderTextLayer, renderInterval); |
|
|
|
}, 500); |
|
|
|
}, resumeInterval); |
|
|
|
} |
|
|
|
}; // textLayerOnScroll
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
window.addEventListener('scroll', textLayerOnScroll, false); |
|
|
|
|
|
|
|
}; // endLayout
|
|
|
|
|
|
|
|
|
|
|
|
this.appendText = function textLayerBuilderAppendText(text, |
|
|
|
this.appendText = function textLayerBuilderAppendText(text, |
|
|
|
fontName, fontSize) { |
|
|
|
fontName, fontSize) { |
|
|
|