我是Flixel的新手,所以如果我的问题太简单,请原谅我。
我的问题是:
我使用Photoshop制作了四个非常简单的图像(支架,移动,侧支架,侧移)然后将其传递给Texture Packer(样式表制造商)
它产生了一个图像(它非常简单)加上一个JSON文件,这里是:
http://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频道询问,但没有人提到它),也在论坛/教程中。
答案 0 :(得分:1)
我看到的第一个问题是你有多行的图像。 Flixel喜欢在一个水平行中的正方形框架。即使您为每个帧指定矩形大小,它们仍然需要具有相同的大小和一个水平行。如果你做得对,你应该有0到3帧。
当您的图像/帧应该更改时没有任何反应的原因是因为您希望它更改为索引处没有帧。这应该通过相同的变化来解决。
出于这个原因,我不相信大多数带有flixel项目的sprite packers。精灵打包器正在尝试最小化文件大小,因此它们会尽可能多地将精灵塞入尽可能少的空间,因此每个精灵都与其他精灵不同。正如我所说,Flixel喜欢它们的大小相同的精灵,并且都在一排。
我找到了一个确实做我想要的东西......一旦我回到家看看它是什么程序(或者如果我甚至不再拥有它),我将不得不看一看。与此同时,只需使用photoshop将文档制作成最高精灵的高度,将宽度与最宽精灵的宽度x制作成单张中的精灵数量。然后将每个精灵/帧放在适当的空间中。
编辑:我认为你根本不需要JSON文件。只需使用透明的PNG。