提交 433127cd 编写于 作者: G Gabriele Cirulli

remove use of class list in actuator, fix animations for firefox

上级 a1e98e0d
...@@ -44,24 +44,37 @@ HTMLActuator.prototype.addTile = function (tile) { ...@@ -44,24 +44,37 @@ HTMLActuator.prototype.addTile = function (tile) {
var position = tile.previousPosition || { x: tile.x, y: tile.y }; var position = tile.previousPosition || { x: tile.x, y: tile.y };
positionClass = this.positionClass(position); positionClass = this.positionClass(position);
element.classList.add("tile", "tile-" + tile.value, positionClass); // We can't use classlist because it somehow glitches when replacing classes
element.textContent = tile.value; var classes = ["tile", "tile-" + tile.value, positionClass];
this.applyClasses(element, classes);
this.tileContainer.appendChild(element); element.textContent = tile.value;
if (tile.previousPosition) { if (tile.previousPosition) {
// Make sure that the tile gets rendered in the previous position first
window.requestAnimationFrame(function () { window.requestAnimationFrame(function () {
element.classList.remove(element.classList[2]); classes[2] = self.positionClass({ x: tile.x, y: tile.y });
element.classList.add(self.positionClass({ x: tile.x, y: tile.y })); self.applyClasses(element, classes); // Update the position
}); });
} else if (tile.mergedFrom) { } 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) { tile.mergedFrom.forEach(function (merged) {
self.addTile(merged); self.addTile(merged);
}); });
} else { } 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) { HTMLActuator.prototype.normalizePosition = function (position) {
......
...@@ -143,6 +143,8 @@ hr { ...@@ -143,6 +143,8 @@ hr {
border-radius: 6px; border-radius: 6px;
width: 500px; width: 500px;
height: 500px; height: 500px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box; } box-sizing: border-box; }
.game-container .game-message { .game-container .game-message {
display: none; display: none;
...@@ -336,29 +338,35 @@ hr { ...@@ -336,29 +338,35 @@ hr {
@-webkit-keyframes appear { @-webkit-keyframes appear {
0% { 0% {
opacity: 0; opacity: 0;
-webkit-transform: scale(0); } -webkit-transform: scale(0);
-moz-transform: scale(0); }
100% { 100% {
opacity: 1; opacity: 1;
-webkit-transform: scale(1); } } -webkit-transform: scale(1);
-moz-transform: scale(1); } }
@-moz-keyframes appear { @-moz-keyframes appear {
0% { 0% {
opacity: 0; opacity: 0;
-webkit-transform: scale(0); } -webkit-transform: scale(0);
-moz-transform: scale(0); }
100% { 100% {
opacity: 1; opacity: 1;
-webkit-transform: scale(1); } } -webkit-transform: scale(1);
-moz-transform: scale(1); } }
@keyframes appear { @keyframes appear {
0% { 0% {
opacity: 0; opacity: 0;
-webkit-transform: scale(0); } -webkit-transform: scale(0);
-moz-transform: scale(0); }
100% { 100% {
opacity: 1; opacity: 1;
-webkit-transform: scale(1); } } -webkit-transform: scale(1);
-moz-transform: scale(1); } }
.tile-new { .tile-new {
-webkit-animation: appear 200ms ease 100ms; -webkit-animation: appear 200ms ease 100ms;
...@@ -368,33 +376,42 @@ hr { ...@@ -368,33 +376,42 @@ hr {
@-webkit-keyframes pop { @-webkit-keyframes pop {
0% { 0% {
-webkit-transform: scale(0); } -webkit-transform: scale(0);
-moz-transform: scale(0); }
50% { 50% {
-webkit-transform: scale(1.2); } -webkit-transform: scale(1.2);
-moz-transform: scale(1.2); }
100% { 100% {
-webkit-transform: scale(1); } } -webkit-transform: scale(1);
-moz-transform: scale(1); } }
@-moz-keyframes pop { @-moz-keyframes pop {
0% { 0% {
-webkit-transform: scale(0); } -webkit-transform: scale(0);
-moz-transform: scale(0); }
50% { 50% {
-webkit-transform: scale(1.2); } -webkit-transform: scale(1.2);
-moz-transform: scale(1.2); }
100% { 100% {
-webkit-transform: scale(1); } } -webkit-transform: scale(1);
-moz-transform: scale(1); } }
@keyframes pop { @keyframes pop {
0% { 0% {
-webkit-transform: scale(0); } -webkit-transform: scale(0);
-moz-transform: scale(0); }
50% { 50% {
-webkit-transform: scale(1.2); } -webkit-transform: scale(1.2);
-moz-transform: scale(1.2); }
100% { 100% {
-webkit-transform: scale(1); } } -webkit-transform: scale(1);
-moz-transform: scale(1); } }
.tile-merged { .tile-merged {
z-index: 20; z-index: 20;
......
...@@ -155,6 +155,8 @@ hr { ...@@ -155,6 +155,8 @@ hr {
border-radius: $tile-border-radius * 2; border-radius: $tile-border-radius * 2;
width: $field-width; width: $field-width;
height: $field-width; height: $field-width;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
.game-message { .game-message {
...@@ -342,15 +344,15 @@ hr { ...@@ -342,15 +344,15 @@ hr {
@include keyframes(appear) { @include keyframes(appear) {
0% { 0% {
// -webkit-transform: scale(1.5);
opacity: 0; opacity: 0;
-webkit-transform: scale(0); -webkit-transform: scale(0);
-moz-transform: scale(0);
} }
100% { 100% {
// -webkit-transform: scale(1);
opacity: 1; opacity: 1;
-webkit-transform: scale(1); -webkit-transform: scale(1);
-moz-transform: scale(1);
} }
} }
...@@ -362,16 +364,17 @@ hr { ...@@ -362,16 +364,17 @@ hr {
@include keyframes(pop) { @include keyframes(pop) {
0% { 0% {
-webkit-transform: scale(0); -webkit-transform: scale(0);
// opacity: 0; -moz-transform: scale(0);
} }
50% { 50% {
-webkit-transform: scale(1.2); -webkit-transform: scale(1.2);
-moz-transform: scale(1.2);
} }
100% { 100% {
-webkit-transform: scale(1); -webkit-transform: scale(1);
// opacity: 1; -moz-transform: scale(1);
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册