Skip to content

Commit

Permalink
remove use of class list in actuator, fix animations for firefox
Browse files Browse the repository at this point in the history
  • Loading branch information
gabrielecirulli committed Mar 10, 2014
1 parent a1e98e0 commit 433127c
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 26 deletions.
27 changes: 20 additions & 7 deletions js/html_actuator.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,24 +44,37 @@ HTMLActuator.prototype.addTile = function (tile) {
var position = tile.previousPosition || { x: tile.x, y: tile.y };
positionClass = this.positionClass(position);

element.classList.add("tile", "tile-" + tile.value, positionClass);
element.textContent = tile.value;
// We can't use classlist because it somehow glitches when replacing classes
var classes = ["tile", "tile-" + tile.value, positionClass];
this.applyClasses(element, classes);

this.tileContainer.appendChild(element);
element.textContent = tile.value;

if (tile.previousPosition) {
// Make sure that the tile gets rendered in the previous position first
window.requestAnimationFrame(function () {
element.classList.remove(element.classList[2]);
element.classList.add(self.positionClass({ x: tile.x, y: tile.y }));
classes[2] = self.positionClass({ x: tile.x, y: tile.y });
self.applyClasses(element, classes); // Update the position
});
} else if (tile.mergedFrom) {
element.classList.add("tile-merged");
classes.push("tile-merged");
this.applyClasses(element, classes);

// Render the tiles that merged
tile.mergedFrom.forEach(function (merged) {
self.addTile(merged);
});
} else {
element.classList.add("tile-new");
classes.push("tile-new");
this.applyClasses(element, classes);
}

// Put the tile on the board
this.tileContainer.appendChild(element);
};

HTMLActuator.prototype.applyClasses = function (element, classes) {
element.setAttribute("class", classes.join(" "));
};

HTMLActuator.prototype.normalizePosition = function (position) {
Expand Down
47 changes: 32 additions & 15 deletions style/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,8 @@ hr {
border-radius: 6px;
width: 500px;
height: 500px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box; }
.game-container .game-message {
display: none;
Expand Down Expand Up @@ -336,29 +338,35 @@ hr {
@-webkit-keyframes appear {
0% {
opacity: 0;
-webkit-transform: scale(0); }
-webkit-transform: scale(0);
-moz-transform: scale(0); }

100% {
opacity: 1;
-webkit-transform: scale(1); } }
-webkit-transform: scale(1);
-moz-transform: scale(1); } }

@-moz-keyframes appear {
0% {
opacity: 0;
-webkit-transform: scale(0); }
-webkit-transform: scale(0);
-moz-transform: scale(0); }

100% {
opacity: 1;
-webkit-transform: scale(1); } }
-webkit-transform: scale(1);
-moz-transform: scale(1); } }

@keyframes appear {
0% {
opacity: 0;
-webkit-transform: scale(0); }
-webkit-transform: scale(0);
-moz-transform: scale(0); }

100% {
opacity: 1;
-webkit-transform: scale(1); } }
-webkit-transform: scale(1);
-moz-transform: scale(1); } }

.tile-new {
-webkit-animation: appear 200ms ease 100ms;
Expand All @@ -368,33 +376,42 @@ hr {

@-webkit-keyframes pop {
0% {
-webkit-transform: scale(0); }
-webkit-transform: scale(0);
-moz-transform: scale(0); }

50% {
-webkit-transform: scale(1.2); }
-webkit-transform: scale(1.2);
-moz-transform: scale(1.2); }

100% {
-webkit-transform: scale(1); } }
-webkit-transform: scale(1);
-moz-transform: scale(1); } }

@-moz-keyframes pop {
0% {
-webkit-transform: scale(0); }
-webkit-transform: scale(0);
-moz-transform: scale(0); }

50% {
-webkit-transform: scale(1.2); }
-webkit-transform: scale(1.2);
-moz-transform: scale(1.2); }

100% {
-webkit-transform: scale(1); } }
-webkit-transform: scale(1);
-moz-transform: scale(1); } }

@keyframes pop {
0% {
-webkit-transform: scale(0); }
-webkit-transform: scale(0);
-moz-transform: scale(0); }

50% {
-webkit-transform: scale(1.2); }
-webkit-transform: scale(1.2);
-moz-transform: scale(1.2); }

100% {
-webkit-transform: scale(1); } }
-webkit-transform: scale(1);
-moz-transform: scale(1); } }

.tile-merged {
z-index: 20;
Expand Down
11 changes: 7 additions & 4 deletions style/main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,8 @@ hr {
border-radius: $tile-border-radius * 2;
width: $field-width;
height: $field-width;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;

.game-message {
Expand Down Expand Up @@ -342,15 +344,15 @@ hr {

@include keyframes(appear) {
0% {
// -webkit-transform: scale(1.5);
opacity: 0;
-webkit-transform: scale(0);
-moz-transform: scale(0);
}

100% {
// -webkit-transform: scale(1);
opacity: 1;
-webkit-transform: scale(1);
-moz-transform: scale(1);
}
}

Expand All @@ -362,16 +364,17 @@ hr {
@include keyframes(pop) {
0% {
-webkit-transform: scale(0);
// opacity: 0;
-moz-transform: scale(0);
}

50% {
-webkit-transform: scale(1.2);
-moz-transform: scale(1.2);
}

100% {
-webkit-transform: scale(1);
// opacity: 1;
-moz-transform: scale(1);
}
}

Expand Down

0 comments on commit 433127c

Please sign in to comment.