Javascript 在Phaser中使用相等尺寸设置精灵表动画

Javascript 在Phaser中使用相等尺寸设置精灵表动画,javascript,animation,phaser-framework,sprite-sheet,Javascript,Animation,Phaser Framework,Sprite Sheet,我有一张精神片: 正如您可以看到的,不同的框架在这里有不同的大小。我不知道如何从不同大小的帧制作动画。请帮帮我。我想你需要为这些精灵创建一个精灵地图册,有时也称为精灵纹理 sprite atlas是PNG文件和JSON文件(有时是XML文件)的组合。PNG文件包含所有整洁地打包在一起的精灵,JSON文件包含该PNG文件中每个精灵的坐标 Phaser和其他库支持这种格式,可以加载和显示这种精灵。那么你可以做什么: 剪切每个精灵并另存为单独的PNG文件 为每个文件指定一个有用的名称 使用实用程序将

我有一张精神片:


正如您可以看到的,不同的框架在这里有不同的大小。我不知道如何从不同大小的帧制作动画。请帮帮我。

我想你需要为这些精灵创建一个精灵地图册,有时也称为精灵纹理

sprite atlas是PNG文件和JSON文件(有时是XML文件)的组合。PNG文件包含所有整洁地打包在一起的精灵,JSON文件包含该PNG文件中每个精灵的坐标

Phaser和其他库支持这种格式,可以加载和显示这种精灵。那么你可以做什么:

剪切每个精灵并另存为单独的PNG文件 为每个文件指定一个有用的名称 使用实用程序将PNG文件打包到sprite atlas中 加载相位器并设置动画 对于有用的名称,我指的是像walk_1.png、walk_2.png、walk_3.png、duck_1.png、duck_2.png、teleport_1.png之类的名称

为了将单独的小精灵打包成一个精灵图集,我使用了一个免费工具。还有一个商业工具,有更多的选择,还有更多的工具可以做同样的事情,比如鞋盒,等等

在Phaser.js中,您可以加载sprite atlas并添加一个sprite,如下所示:

// either use .atlasJSONArray or .atlasJSONHash, depends on your JSON format
game.load.atlasJSONHash('myspriteatlassheet1', 'img/myspriteatlasfile.png', 'img/myspritefile.json');
var mysprite = game.add.sprite(10, 20, 'myspritesheet1', 'walk_1');
并添加一个动画,如下所示:

mysprite.animations.add('jump', ['jump_1', 'jump_2', 'jump_3', 'jump_4'], 20, true); // 20fps, loop=true
mysprite.animations.add('duck', ['duck_1', 'duck_2', 'duck_3'], 30, true);
// etc.

mysprite.animations.play('jump');

我认为你需要为这些精灵创建一个精灵地图集,有时也称为精灵纹理

sprite atlas是PNG文件和JSON文件(有时是XML文件)的组合。PNG文件包含所有整洁地打包在一起的精灵,JSON文件包含该PNG文件中每个精灵的坐标

Phaser和其他库支持这种格式,可以加载和显示这种精灵。那么你可以做什么:

剪切每个精灵并另存为单独的PNG文件 为每个文件指定一个有用的名称 使用实用程序将PNG文件打包到sprite atlas中 加载相位器并设置动画 对于有用的名称,我指的是像walk_1.png、walk_2.png、walk_3.png、duck_1.png、duck_2.png、teleport_1.png之类的名称

为了将单独的小精灵打包成一个精灵图集,我使用了一个免费工具。还有一个商业工具,有更多的选择,还有更多的工具可以做同样的事情,比如鞋盒,等等

在Phaser.js中,您可以加载sprite atlas并添加一个sprite,如下所示:

// either use .atlasJSONArray or .atlasJSONHash, depends on your JSON format
game.load.atlasJSONHash('myspriteatlassheet1', 'img/myspriteatlasfile.png', 'img/myspritefile.json');
var mysprite = game.add.sprite(10, 20, 'myspritesheet1', 'walk_1');
并添加一个动画,如下所示:

mysprite.animations.add('jump', ['jump_1', 'jump_2', 'jump_3', 'jump_4'], 20, true); // 20fps, loop=true
mysprite.animations.add('duck', ['duck_1', 'duck_2', 'duck_3'], 30, true);
// etc.

mysprite.animations.play('jump');

您是否将精灵作为一个单独的精灵图集PNG或许多单独的精灵PNG文件?@BdR,我只有这个绿色背景的.PNG。您是否将精灵作为一个单独的精灵图集PNG或许多单独的精灵PNG文件?@BdR,我只有这个绿色背景的.png。从不透明背景的.png中剪切每个小帧的最简单方法是什么?取决于您使用的图像编辑器。但最简单的方法可能是用矩形选择一个精灵,然后用魔杖选择取消选择周围的绿色。按住Alt Paint Dot Net或Ctrl Gimp以单击并减去所选内容。然后复制粘贴到新图像并保存。然后对所有其他精灵重复。从不透明背景的.png中剪切每个小帧的最简单方法是什么?取决于您使用的图像编辑器。但最简单的方法可能是用矩形选择一个精灵,然后用魔杖选择取消选择周围的绿色。按住Alt Paint Dot Net或Ctrl Gimp以单击并减去所选内容。然后复制粘贴到新图像并保存。然后对所有其他精灵重复。