我使用Snap.svg來創建一個簡單的紙牌遊戲。我從文件中加載了卡片並使用矩陣轉換將它們移動到特定位置。Snap SVG動畫現有矩陣
這是SVG元素現在看起來有點像這樣:
<g id="card11" inkscape:label="#g3908" transform="matrix(1.5621,0,0,1.5621,625.1085,529.3716)" cardposition="4" style="visibility: visible;" class="card inhand hand-4 ofplayer1">...</g>
不過,現在我想將它們動畫到特定的位置(同樣爲所有的卡)使用此:
function animateTo(object, x, y, scaleX, scaleY, time) {
var matrix = object.transform().localMatrix;
var added = new Snap.Matrix();
added.translate(x, y);
added.scale(scaleX, scaleY);
added.add(matrix);
object.animate({transform: added}, time);
}
或類似的東西:
function animateTo(object, x, y, scaleX, scaleY, time) {
object.animate({transform: "t100,100"}, time);//this one I tried to use to understand how snap animations works
}
而這裏是我的問題 - 當它動畫時,它首先刪除是對象的動畫矩陣,並使用空矩陣(其中對象不具有變換屬性)從其原始位置開始生成動畫。 例如,當我嘗試:
var matrix = object.transform().localMatrix;
object.animate({transform: matrix}, time);
我預期它會做什麼,但我的對象閃爍,左上角(空白基質)和動畫來定位,它應該留下來。
我在做什麼錯?我需要將該對象從某個矩陣狀態動畫到另一個(理想情況下每個對象都是同一個對象)。它有可能嗎?像我可以指定開始轉換屬性?
謝謝。
我可能不會嘗試動畫矩陣,它們通常會因各種原因而成爲問題,即使它們工作時也不會完全按照您的想法進行操作。嘗試動畫轉換字符串,它應該工作。如果沒有,發佈一個jsfiddle。 – Ian 2015-02-08 08:18:05