如何在 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>
相关文章:
- 在play2框架中向json对象添加下拉列表项
- 打字精灵动画
- 如何在离子框架+有角度的框架中制作顶部标签
- 如何在另一个html文件的框架中包含图像
- 如何重置内嵌框架
- 聚合物是一个框架而不是一个库.如何模块化地使用web组件
- 在EaselJS中设置精灵表动画时出现问题
- 用于图像和基于浏览器的图表的图表框架
- 没有装饰的小型浏览器框架
- Chrome开发工具中使用了哪些框架和库
- 闭包js框架-将ArrayBuffer转换为字符串
- three.js:如何让透明的png精灵投射和接收阴影
- 类似于Prism的Knockout js框架
- 如何使用Pixijs获取在加载的精灵表资产中定义的图像
- 在其他javascript框架模板中运行angular指令
- 如何在 Craftyjs 中使用多行精灵表而不手动指定框架
- TweenJS对精灵的框架进行粗花处理
- 在Craftyjs中更改精灵框架
- 在Phaser框架中给予精灵一个覆盖
- 在Enchant JS框架中创建一个循环运动的精灵