2012-04-12 94 views
1

我是Flixel的新手,请原谅我,如果我的问题太简单。样式表不能正常工作

我的问题是: 我做了四个非常简单的图像(架,移动,侧支架,侧移动)使用Photoshop然后将它传递给纹理帕克(A样式表制造商) 它产生我的图像(它`非常简单)加上一个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频道询问,但没有人提及),也在论坛/教程中。

回答

1

我看到的第一个问题是您的图像在多行上。 Flixel喜欢在一个水平行中的正方形框架。即使您为每个框架指定了一个矩形大小,它们仍然需要全部大小相同并且在一个水平行中。如果你做得对,你应该有0到3帧。

当你的图像/帧应该改变时没有任何反应是因为你想要改变的索引没有帧。这应该通过相同的更改来解决。

因为这个原因,我不相信大多数带有flixel项目的sprite包装机。 Sprite包装工正试图最小化文件大小,因此它们会将尽可能多的精灵塞入尽可能小的空间,因此每个精灵都与其他精灵大小不同。正如我所说,Flixel喜欢它的大小相同的精灵,并且都在同一行。

我找到了一个可以做我想做的事情......一旦我回家看看它是什么节目(或者如果我什至不再拥有它),我将不得不看一看。同时,只需使用Photoshop将文档中的最高精灵的高度和宽度最宽的精灵的宽度与工作表中的精灵数量进行比较。然后将每个精灵/框架放置在适当的空间中。

编辑:我不认为你需要JSON文件。只需使用透明的PNG。

+0

我把每一个放在15x20像素,仍然是相同的结果,也许是因为没有空间? – Abdulaziz 2012-04-12 18:54:20

+0

更好的结果,现在它显示一帧与第二帧的一块,因为它们之间没有空间(我猜测) – Abdulaziz 2012-04-12 18:56:58

+0

尝试20x20正方形。 – 2012-04-12 19:19:13