簡體   English   中英

如何在Craftyjs中使用多行精靈表而無需手動指定幀

[英]How to use multiline sprite sheet in Craftyjs without specifying frames manually

我剛剛開始使用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);
}

有沒有辦法讓它遍歷精靈表上的所有行而不必手動創建幀?

提前致謝!

據我所知,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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM