我刚开始使用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 :(得分: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("] [") + "]]";
&#13;
<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>
&#13;