gpt4 book ai didi

javascript - 如何在不手动指定帧的情况下在 Craftyjs 中使用多行 Sprite 表

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:41:39 25 4
gpt4 key购买 nike

我刚开始使用 craftyjs,遇到了一个问题。

我有一个 sprite 表,其中有两行用于同一动画。上排有 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);
}

有没有办法让它遍历 sprite 表上的所有行而无需手动创建帧?

提前致谢!

最佳答案

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

关于javascript - 如何在不手动指定帧的情况下在 Craftyjs 中使用多行 Sprite 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36778990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com