我是Flixel的新手,所以如果我的问题太简单,请原谅我。
我的问题是:我使用Photoshop制作了四个非常简单的图像(站立,移动,侧站,侧移),然后将其传递给纹理打包器(样式表制作器)它为我生成了一个图像(非常简单)和一个 JSON 文件,这里是:
https://i.stack.imgur.com/UTi4G.png所以我想将它们与 Flixel 一起使用,作为站立的角色(第一个),当我调用动画移动时,它将使用最后一个图像,但它没有按预期工作。基本上,它一次显示所有四个图像。
代码如下:
Character.as:
package
{
import org.flixel.FlxSprite;
public class Character extends FlxSprite
{
[Embed (source="character.png")]
private var CharacterGraphic:Class;
public function Character(X:Number=0, Y:Number=0)
{
super(X, Y);
loadGraphic(CharacterGraphic, true, false, 53, 54);
velocity.y = 100;
addAnimation('move_forward', [0, 3], 30, false);
}
}
}
PlayState类(我在其中创建此类的实例)
override public function create():void{
character = new Character(100, 200);
add(character);
}
override public function update():void{
//for debugging
if(character.y == 600){
character.play('move_forward');
}
super.update();
}
所以我期望:
当 velocity.y 为 600 时,要弹出的第一个图像(并继续下降)(仅用于测试)move_forward动画开始(循环浏览第一个和最后一个图像)
输出为:
所有四个图像都弹出了,当 velocity.y == 60 时,没有任何反应。
真的认为我错过了一些东西,因为我对Actionscript 3和Flixel(还有游戏开发!)非常陌生。
几乎相同的步骤适用于在线教程,唯一的区别是他创建了几个动画(敌人)而不是一个,请在此处查看 http://gotoandlearn.com/play.php?id=139
对于JSON文件,我从未找到它的用途(我尝试在IRC频道中询问,但没有人提及它),也在论坛/教程中。
我看到的第一个问题是你的图像在多行上。Flixel喜欢它的框架在一个水平行中呈正方形。即使为每个帧指定矩形大小,它们仍然需要大小相同,并且位于一个水平行中。如果操作正确,则应具有帧 0 到 3。
图像/帧应更改时没有任何反应的原因是,您希望它更改为的索引处没有帧。这应该通过相同的更改来修复。
出于这个原因,我不信任大多数带有 flixel 项目的精灵打包器。精灵打包程序试图最小化文件大小,因此他们会将尽可能多的精灵塞进尽可能小的空间中,因此每个精灵的大小都与其他精灵不同。正如我所说,Flixel 喜欢大小相等且一排的精灵。
我找到了一个可以做我想做的事的人......回到家后,我必须看看它是什么程序(或者如果我什至没有它了)。同时,只需使用 photoshop 将文档设置为最高精灵的高度和最宽精灵的宽度 x 工作表中精灵的数量。然后将每个精灵/帧放置在适当的空间中。
编辑:我认为您根本不需要JSON文件。只需使用透明的 PNG。