Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

AustinEast/heaps-aseprite

Open more actions menu

Repository files navigation

heaps-aseprite

Load and render sprites and animations in Aseprite format. Based on the ase and openfl-aseprite libraries. Sample Aseprite files all borrowed from openfl-aseprite.

Features

  • Hooks into the Heaps Engine's resource management to automatically handle any .aseprite or .ase file
  • Optimizes runtime performance by parsing Aseprite files during compilation (generating .png and .asedata files)
  • Supports all Color Modes, Animation Tags, Layers, and Slices (including 9-Slices!)
  • Includes the AseAnim Class to easily render Animations (based on the Heaps Engine's Anim Class)
  • Supports Live Resource Updating
  • Gets Type-safe references to an Aseprite file's Tags and Slices (thanks @deepnight!)

Getting Started

heaps-aseprite requires Haxe 4 and the Heaps Engine to run.

Install the library from haxelib:

haxelib install heaps-aseprite

Alternatively the dev version of the library can be installed from github:

haxelib git heaps-aseprite https://github.com/AustinEast/heaps-aseprite.git

Install heaps-aseprite's dependency, ase.

haxelib install ase

Then include the library in your project's .hxml:

-lib heaps-aseprite

Example

// Get the whole sprite as a Tile
var spr1 = new Bitmap(Res.single_frame_sprite.toAseprite().toTile(), s2d);

// Alternatively get the sprite directly as an Image
var image = new Bitmap(Res.single_frame_sprite.toImage().toTile(), s2d);

// Get an animation from the sprite's tag
var spr2 = new AseAnim(Res.animated_sprite.toAseprite().getTag('walk'), s2d);
spr2.loop = true;

// Override the direction of a tagged animation
var spr3 = new AseAnim(Res.animated_sprite.toAseprite().getTag('walk', AnimationDirection.REVERSE), s2d);
spr3.loop = true;

// Get an animation based on tag and slice
var spr4 = new AseAnim(Res.animated_sprite.toAseprite().getTag('walk', -1, 'Head'), s2d);
spr4.loop = true;

// Get a single frame from a slice
var slice = new Bitmap(Res.slices.toAseprite().getSlice('Slice 1').tile, s2d);

// Get all frames from a slice
var slice2 = new AseAnim(Res.slices.toAseprite().getSlices('Slice 1'), s2d);
slice2.loop = true;

// Get a 9-Slice ScaleGrid from a slice
var nineSlice = Res.nine_slices.toAseprite().toScaleGrid('9-Slices', 0, s2d);

// Live Resource Updatng
var animation = new AseAnim(Res.animated_sprite.toAseprite().getTag('walk'), s2d);
animation.loop = true;
Res.animated_sprite.watch(() -> {
  // Make sure to call the default `watch()` callback!
  Res.animated_sprite.updateData();

  // Replay the animation to get the updated frames
  animation.play(Res.animated_sprite.toAseprite().getTag('walk'));
});

// Want type-safe Tags and Slices? Use the `Dictionary` class to get typed references from an Aseprite resource
var typeSafeTags = Dictionary.getTags(Res.animated_sprite);
new AseAnim(Res.animated_sprite.toAseprite().getTag(typeSafeTags.walk), flow);

var typeSafeSlices = Dictionary.getSlices(Res.slices);
new Bitmap(Res.slices.toAseprite().getSlice(typeSafeSlices.Slice_1).tile, flow);

Roadmap

  • Document codebase (public fields and methods)

About

An Aseprite File Parser for Heaps

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  
Morty Proxy This is a proxified and sanitized view of the page, visit original site.