Skip to content

Commit ecc2c23

Browse files
author
Rich Harris
committed
tweak
1 parent 816ea9e commit ecc2c23

File tree

3 files changed

+29
-58
lines changed

3 files changed

+29
-58
lines changed

content/tutorial/03-advanced-svelte/05-bindings/05-bind-this/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The readonly `this` binding applies to every element (and component) and allows
77
```svelte
88
/// file: App.svelte
99
<canvas
10-
bind:this={canvas}
10+
+++bind:this={canvas}+++
1111
width={32}
1212
height={32}
1313
></canvas>

content/tutorial/03-advanced-svelte/05-bindings/05-bind-this/app-a/src/lib/App.svelte

Lines changed: 16 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,53 +5,40 @@
55
66
onMount(() => {
77
const ctx = canvas.getContext('2d');
8-
let frame = requestAnimationFrame(loop);
98
10-
function loop(t) {
9+
let frame = requestAnimationFrame(function loop(t) {
1110
frame = requestAnimationFrame(loop);
1211
13-
const imageData = ctx.getImageData(
14-
0,
15-
0,
16-
canvas.width,
17-
canvas.height
18-
);
12+
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
1913
20-
for (
21-
let p = 0;
22-
p < imageData.data.length;
23-
p += 4
24-
) {
14+
for (let p = 0; p < imageData.data.length; p += 4) {
2515
const i = p / 4;
2616
const x = i % canvas.width;
2717
const y = (i / canvas.width) >>> 0;
2818
29-
const r =
30-
64 +
31-
(128 * x) / canvas.width +
32-
64 * Math.sin(t / 1000);
33-
const g =
34-
64 +
35-
(128 * y) / canvas.height +
36-
64 * Math.cos(t / 1000);
37-
const b = 128;
19+
const red = 64 + (128 * x) / canvas.width + 64 * Math.sin(t / 1000);
20+
const green = 64 + (128 * y) / canvas.height + 64 * Math.cos(t / 1000);
21+
const blue = 128;
3822
39-
imageData.data[p + 0] = r;
40-
imageData.data[p + 1] = g;
41-
imageData.data[p + 2] = b;
23+
imageData.data[p + 0] = red;
24+
imageData.data[p + 1] = green;
25+
imageData.data[p + 2] = blue;
4226
imageData.data[p + 3] = 255;
4327
}
4428
4529
ctx.putImageData(imageData, 0, 0);
46-
}
30+
});
4731
4832
return () => {
4933
cancelAnimationFrame(frame);
5034
};
5135
});
5236
</script>
5337

54-
<canvas width={32} height={32} />
38+
<canvas
39+
width={32}
40+
height={32}
41+
/>
5542

5643
<style>
5744
canvas {
@@ -62,8 +49,8 @@
6249
height: 100%;
6350
background-color: #666;
6451
mask: url(svelte-logo-mask.svg) 50% 50% no-repeat;
65-
mask-size: 40%;
52+
mask-size: 60vmin;
6653
-webkit-mask: url(svelte-logo-mask.svg) 50% 50% no-repeat;
67-
-webkit-mask-size: 40%;
54+
-webkit-mask-size: 60vmin;
6855
}
6956
</style>

content/tutorial/03-advanced-svelte/05-bindings/05-bind-this/app-b/src/lib/App.svelte

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,45 +5,29 @@
55
66
onMount(() => {
77
const ctx = canvas.getContext('2d');
8-
let frame = requestAnimationFrame(loop);
98
10-
function loop(t) {
9+
let frame = requestAnimationFrame(function loop(t) {
1110
frame = requestAnimationFrame(loop);
1211
13-
const imageData = ctx.getImageData(
14-
0,
15-
0,
16-
canvas.width,
17-
canvas.height
18-
);
12+
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
1913
20-
for (
21-
let p = 0;
22-
p < imageData.data.length;
23-
p += 4
24-
) {
14+
for (let p = 0; p < imageData.data.length; p += 4) {
2515
const i = p / 4;
2616
const x = i % canvas.width;
2717
const y = (i / canvas.width) >>> 0;
2818
29-
const r =
30-
64 +
31-
(128 * x) / canvas.width +
32-
64 * Math.sin(t / 1000);
33-
const g =
34-
64 +
35-
(128 * y) / canvas.height +
36-
64 * Math.cos(t / 1000);
37-
const b = 128;
19+
const red = 64 + (128 * x) / canvas.width + 64 * Math.sin(t / 1000);
20+
const green = 64 + (128 * y) / canvas.height + 64 * Math.cos(t / 1000);
21+
const blue = 128;
3822
39-
imageData.data[p + 0] = r;
40-
imageData.data[p + 1] = g;
41-
imageData.data[p + 2] = b;
23+
imageData.data[p + 0] = red;
24+
imageData.data[p + 1] = green;
25+
imageData.data[p + 2] = blue;
4226
imageData.data[p + 3] = 255;
4327
}
4428
4529
ctx.putImageData(imageData, 0, 0);
46-
}
30+
});
4731
4832
return () => {
4933
cancelAnimationFrame(frame);
@@ -66,8 +50,8 @@
6650
height: 100%;
6751
background-color: #666;
6852
mask: url(svelte-logo-mask.svg) 50% 50% no-repeat;
69-
mask-size: 40%;
53+
mask-size: 60vmin;
7054
-webkit-mask: url(svelte-logo-mask.svg) 50% 50% no-repeat;
71-
-webkit-mask-size: 40%;
55+
-webkit-mask-size: 60vmin;
7256
}
7357
</style>

0 commit comments

Comments
 (0)