2016-04-21 39 views
4

我剛開始使用craftyjs並遇到問題。如何在Craftyjs中使用多行精靈表而無需手動指定框架

我有一個精靈表,有兩個相同的動畫行。頂行有4,底部有3.

我不知道如何讓它通過所有7張圖像播放。我可以通過一行或另一行來播放它,但不能通過它們播放。

這是我的主要功能。請注意註釋掉的部分。如果我明確設置每個幀,我可以很好地工作。這對我來說不算太糟糕,因爲我只有7個......但我也有一些擁有100+!

function talk(){ 
    var talker = Crafty.e('2D, Canvas, talk_start, SpriteAnimation'); 
    /* 
    .reel('talk', 1000 ,[ 
     [0,0],[1,0],[2,0],[3,0], 
     [0,1],[1,1],[2,1] 
    ]) 
    */ 
    talker.reel('talk', 1000, 0, 0, 6); 
    talker.animate('talk', -1); 
} 

有沒有什麼辦法讓它通過精靈表上的所有行而不必手動創建框架?

在此先感謝!

回答

0

據我所知,Crafty(v0.7.1)沒有內置的方法來做到這一點。
但是,您可以創建一個輔助函數來爲您生成這些繞回卷軸。

function generateReel(fromX, fromY, frameCount, sizeX) { 
 
    var out = [], i; 
 

 
    if (frameCount >= 0) { 
 
    for (i = 0; i < frameCount; ++i) { 
 
     out.push([fromX, fromY]); 
 

 
     if (++fromX >= sizeX) { 
 
     fromX = 0; 
 
     fromY++; 
 
     } 
 
    } 
 
    } else { 
 
    for (i = 0; i > frameCount; --i) { 
 
     out.push([fromX, fromY]); 
 

 
     if (--fromX < 0) { 
 
     fromX = sizeX - 1; 
 
     fromY--; 
 
     } 
 
    } 
 
    } 
 

 
    return out; 
 
} 
 

 
document.getElementById('result1').textContent = 
 
    "[[" + generateReel(0, 0, 7, 4).join("] [") + "]]"; 
 
document.getElementById('result2').textContent = 
 
    "[[" + generateReel(2, 1, -7, 4).join("] [") + "]]";
<div>Result of generateReel(0, 0, 7, 4):</div> 
 
<div id="result1"></div> 
 
<div>Result of generateReel(2, 1, -7, 4):</div> 
 
<div id="result2"></div>

+0

徑自打開上狡猾的問題追蹤功能要求:craftyjs /狡猾#1028](https://github.com/craftyjs/Crafty/issues/1028) – mucaho

+0

功能已實施,應在即將發佈。 – mucaho

相關問題