样式表没有按预期工作
Posted
技术标签:
【中文标题】样式表没有按预期工作【英文标题】:Style sheet is not working as supposed to 【发布时间】:2012-04-25 01:08:01 【问题描述】:我是 Flixel 的新手,所以如果我的问题太简单,请原谅我。
我的问题是: 我使用 Photoshop 制作了四个非常简单的图像(站立、移动、侧立、侧移),然后将其传递给 Texture Packer(样式表制造商) 它为我生成了一张图片(非常简单)和一个 JSON 文件,这里是:http://i.stack.imgur.com/UTi4G.png 所以我想将它们与 Flixel 一起用作站立的角色(第一个),当我调用动画移动时,它将使用最后一个图像,但它没有按预期工作。基本上它一次显示所有四个图像。 这是代码: 字符.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 帧。
当您的图像/框架应该更改时没有发生任何事情的原因是因为您希望它更改为的索引处没有框架。这应该通过相同的更改来解决。
出于这个原因,我不相信大多数 sprite 打包器都有 flixel 项目。 Sprite 打包器正在尝试最小化文件大小,因此他们会将尽可能多的 sprite 塞入尽可能小的空间,因此每个 sprite 的大小都与其他 sprite 不同。正如我所说,Flixel 喜欢它的 sprite 大小相同且全部排在一行中。
我找到了一个可以做我想做的事情...我回家后必须看看它是什么程序(或者如果我什至没有它了)。同时,只需使用 Photoshop 制作一个文档:最高精灵的高度和最宽精灵的宽度 x 工作表中精灵的数量。然后将每个精灵/帧放置在适当的空间中。
编辑:我认为您根本不需要 JSON 文件。只需使用透明的 PNG。
【讨论】:
我把每一个都放在 15x20 像素中,结果还是一样,可能是因为没有空间? 更好的结果,现在它显示一帧和第二帧的一部分,因为它们之间没有空间(我猜) 谢谢,它正在工作。我只是在每张图片之间留出更多空间(比如 18x20),它就可以工作了,非常感谢,你太棒了!FlxSprite.loadGraphic()
可以选择获取每个框架的尺寸。如果您不指定,Flixel 会根据图像高度生成正方形。在 loadGraphic 中指定尺寸,或将每个框架设为正方形。以上是关于样式表没有按预期工作的主要内容,如果未能解决你的问题,请参考以下文章