mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2024-12-29 09:22:22 -05:00
Add keepalive attribute to canvas to tag that controls wether it animates in background in emulated requestAnimationFrame() function, and use it in all example files.
This commit is contained in:
parent
a775e66632
commit
3feb45addc
31 changed files with 60 additions and 77 deletions
|
@ -52,5 +52,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -70,5 +70,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -300,5 +300,5 @@
|
|||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -47,5 +47,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body style='background-color:black'>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -78,5 +78,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
File diff suppressed because one or more lines are too long
|
@ -44,5 +44,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -71,5 +71,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -27,5 +27,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -82,5 +82,5 @@
|
|||
</head>
|
||||
<body>
|
||||
<p>Click to add circles:</p>
|
||||
<canvas id='canvas' resize stats></canvas>
|
||||
<canvas id="canvas" resize stats keepalive="true"></canvas>
|
||||
</body>
|
|
@ -42,5 +42,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body style='background-color: black'>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -15,5 +15,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -43,5 +43,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -29,5 +29,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
File diff suppressed because one or more lines are too long
|
@ -23,5 +23,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -92,5 +92,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -81,5 +81,5 @@
|
|||
Drag segment handles and points to manipulate them.
|
||||
Close the path to start a new one.
|
||||
</p>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -26,5 +26,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -31,5 +31,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -68,5 +68,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -78,5 +78,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -40,5 +40,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -113,5 +113,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -40,5 +40,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -78,5 +78,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -26,5 +26,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -44,5 +44,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -84,5 +84,5 @@
|
|||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='canvas' resize></canvas>
|
||||
<canvas id="canvas" resize keepalive="true"></canvas>
|
||||
</body>
|
|
@ -99,52 +99,42 @@ DomEvent.requestAnimationFrame = new function() {
|
|||
|
||||
// So we need to fake it. Define helper functions first:
|
||||
var callbacks = [],
|
||||
fastRate = 1000 / 60,
|
||||
slowRate = 1000,
|
||||
focused = true,
|
||||
timer;
|
||||
|
||||
// Installs interval timer that checks all callbacks. This results in much
|
||||
// faster animations than repeatedly installing timout timers.
|
||||
function setTimer(timeout) {
|
||||
window.clearInterval(timer);
|
||||
timer = window.setInterval(function() {
|
||||
// Checks all installed callbacks for element visibility and execute
|
||||
// if needed.
|
||||
if (!focused)
|
||||
return;
|
||||
for (var i = callbacks.length - 1; i >= 0; i--) {
|
||||
var entry = callbacks[i],
|
||||
func = entry[0],
|
||||
element = entry[1];
|
||||
if (!element || DomElement.isVisible(element)) {
|
||||
// Handle callback and remove it from callbacks list.
|
||||
callbacks.splice(i, 1);
|
||||
func(+new Date);
|
||||
}
|
||||
}
|
||||
}, timeout);
|
||||
}
|
||||
|
||||
if (!paper.debug) {
|
||||
DomEvent.add(window, {
|
||||
focus: function() {
|
||||
focused = true;
|
||||
// Switch to falst checkCallback calls while window is focused.
|
||||
timer && setTimer(fastRate);
|
||||
},
|
||||
blur: function() {
|
||||
focused = false;
|
||||
// Switch to slow checkCallback calls while window is blured.
|
||||
timer && setTimer(slowRate);
|
||||
}
|
||||
});
|
||||
}
|
||||
DomEvent.add(window, {
|
||||
focus: function() {
|
||||
focused = true;
|
||||
},
|
||||
blur: function() {
|
||||
focused = false;
|
||||
}
|
||||
});
|
||||
|
||||
return function(callback, element) {
|
||||
// See if we can handle natively first
|
||||
if (request)
|
||||
return request(callback, element);
|
||||
// If not, do the callback handling ourself:
|
||||
callbacks.push([callback, element]);
|
||||
!timer && setTimer(fastRate);
|
||||
if (!timer) {
|
||||
// Installs interval timer that checks all callbacks. This results
|
||||
// in faster animations than repeatedly installing timout timers.
|
||||
timer = window.setInterval(function() {
|
||||
// Checks all installed callbacks for element visibility and
|
||||
// execute if needed.
|
||||
for (var i = callbacks.length - 1; i >= 0; i--) {
|
||||
var entry = callbacks[i],
|
||||
func = entry[0],
|
||||
element = entry[1];
|
||||
if (!element || element.getAttribute('keepalive') == 'true'
|
||||
|| focused && DomElement.isVisible(element)) {
|
||||
// Handle callback and remove it from callbacks list.
|
||||
callbacks.splice(i, 1);
|
||||
func(+new Date);
|
||||
}
|
||||
}
|
||||
}, 1000 / 60);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
|
|
@ -108,12 +108,5 @@ if (window.tests) {
|
|||
for (var i = 0; i < sources.length; i++) {
|
||||
document.write('<script type="text/javascript" src="' + (window.root || '')
|
||||
+ sources[i] + '"></script>');
|
||||
if (sources[i] === 'src/paper.js') {
|
||||
// Activate paper.debug for code loaded through load.js, as we're in
|
||||
// development mode.
|
||||
document.write('<script type="text/javascript">'
|
||||
+ 'paper.debug = false;'
|
||||
+ '</script>');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue