Skip to content

Commit 340dbfe

Browse files
committed
fixed animation/render issue part 1
1 parent 3f09cd9 commit 340dbfe

File tree

4 files changed

+138
-2
lines changed

4 files changed

+138
-2
lines changed

css/secrets.css

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
body {
2+
overflow: hidden;
3+
}
4+
5+
.row {
6+
display: flex;
7+
margin-left: 1em;
8+
}
9+
10+
.cell:hover, .cell:visited, .cell:focus {
11+
animation: loaderAnim 5s ease-in-out infinite normal forwards;
12+
}
13+
14+
15+
@keyframes loaderAnim {
16+
0% {
17+
transform:rotate(0deg);
18+
}
19+
50% {
20+
transform:rotate(180deg);
21+
}
22+
100% {
23+
transform:rotate(0deg);
24+
}
25+
}

js/2secrets.js

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
document.body.style.background = 'black';
2+
3+
var height = $('body').height();
4+
var width = $('body').width();
5+
var mobileSize = 200;
6+
var desktopSize = 150;
7+
var radius = 0, rows = 0, cols = 0, size;
8+
9+
// Define rows, colnums, and shape radius based on document size
10+
// var isMobile = window.matchMedia("only screen and (max-width: 850px)").matches ||
11+
// /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
12+
// var isOtherMediaQuery = window.matchMedia("only screen and (min-width:1080px)").matches;
13+
size = desktopSize;
14+
rows = Math.floor(height / size);
15+
cols = Math.floor(width / size);
16+
radius = Math.floor(Math.max(width, height) / Math.max(rows, cols)) / 2;
17+
18+
var shapes = makeFlowers();
19+
var flowers = [];
20+
21+
for (var r = 0; r < rows; r++) {
22+
var rowId = "row" + r;
23+
var row = $("<div/>").addClass("row").attr("id", rowId).appendTo('body');
24+
// even rows have an offset of 0.5
25+
var even = !!(r % 2);
26+
var vi = r / (rows - 1);
27+
for (var c = 0; c < cols; c++) {
28+
// var cell = $("<div/>").addClass("cell").appendTo(row);
29+
var cellId = "cell" + ((r * rows) + c);
30+
$(row).append('<div class="cell" id="' + cellId + '"></div>')
31+
var k = c;
32+
if (even) {
33+
k += 0.5;
34+
// we skip the final col on even rows to avoid overflow
35+
if (c >= cols - 1) {
36+
continue;
37+
}
38+
} else {
39+
row.css("position", "relative");
40+
row.css("left", (size / 2 * -1 + "px"));
41+
}
42+
var hi = k /(cols - 1);
43+
var shape = pickFlower(shapes);
44+
shape.translation.set((size + 25) / 2, (size + 25) / 2);
45+
// shape.translation.set(hi * width, vi * height);
46+
// Setup the canvas
47+
var two = new Two({
48+
width: size + 25,
49+
height:size + 25
50+
}).appendTo(document.getElementById(cellId));
51+
52+
$(cellId).click(function(e) {
53+
54+
}
55+
56+
two.add(shape);
57+
two.update();
58+
flowers.push(shape);
59+
}
60+
}
61+
62+
63+
for (var f in flowers) {
64+
var flower = flowers[f];
65+
$(flower._renderer.elem)
66+
.click(function(e) {
67+
flower.fill = "blue";
68+
})
69+
}
70+
71+
72+
function roseMath(v, k, t) {
73+
v.x = radius * Math.cos(k * t) * Math.cos(t);
74+
v.y = radius * Math.cos(k * t) * Math.sin(t);
75+
return v;
76+
}
77+
78+
function makeFlowers() {
79+
var flowers = [];
80+
var resolution = 240; // every flower has 240 points
81+
for (var k = 4; k < 20; k++) {
82+
var points = [];
83+
for (var j = 0; j < resolution; j++) {
84+
points[j] = new Two.Anchor();
85+
roseMath(points[j], k, Math.PI * 2 * j / resolution);
86+
}
87+
// Create shape
88+
var flower = new Two.Path(points, true, true);
89+
flowers.push(flower);
90+
}
91+
return flowers;
92+
}
93+
94+
function pickFlower(flowers) {
95+
var f = Math.floor(Math.random() * flowers.length);
96+
var flower = flowers[f].clone();
97+
// Style the shape
98+
var colors = ['tomato', 'orangered',
99+
'gold', 'red', 'darkorange'];
100+
var color = colors[Math.floor(Math.random() * colors.length)];
101+
flower.stroke = color;
102+
flower.fill = color;
103+
flower.linewidth = 4;
104+
flower.cap = 'round';
105+
// flower.rotation = Math.floor(Math.random() * 16) * Math.PI / 8 + Math.PI / 16;
106+
// For animation later on
107+
flower.step = (Math.floor(Math.random() * 8) / 8) * Math.PI / 60;
108+
flower.step *= Math.random() > 0.5 ? - 1 : 1;
109+
return flower;
110+
}

js/secrets.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ function pickFlower(flowers) {
8989
flower.fill = color;
9090
flower.linewidth = 4;
9191
flower.cap = 'round';
92-
flower.rotation = Math.floor(Math.random() * 4) * Math.PI / 2 + Math.PI / 4;
92+
// flower.rotation = Math.floor(Math.random() * 4) * Math.PI / 2 + Math.PI / 4;
9393
// For animation later on
9494
flower.step = (Math.floor(Math.random() * 8) / 8) * Math.PI / 60;
9595
flower.step *= Math.random() > 0.5 ? - 1 : 1;

secrets.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
<html>
22
<head>
33
<title>Secrets</title>
4+
<link href="./css/secrets.css" rel="stylesheet">
45
<script src="./js/two.js"></script>
56
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
67
<script src="./js/url.js"></script>
78
</head>
89
<body>
910
</body>
10-
<script src="./js/secrets.js"></script>
11+
<script src="./js/2secrets.js"></script>
1112
</html>

0 commit comments

Comments
 (0)