Skip to main content

Amino 1.0 is released: A scenegraph for Java and JavaScript

Posted by joshy on May 28, 2011 at 12:42 PM PDT

After several months of work, nestled in between getting webOS 3.0 out the door and prepping the nursery for the pending arrival of my first child, I am happy to announce the release of Amino 1.0.
I have been eagerly following the development of HTML 5 Canvas support in the major browsers as well as ensuring the HP TouchPad will have great support for it. Amino is a great way to use the power of Canvas in modern mobile and web applications, and to bring rich graphics to desktop Swing applications.

What is Amino?

Amino is a small scene graph library for both JavaScript and Java, letting you embed smooth animated graphics in webpages with the Canvas tag and in desktop Java applications with a custom JComponent. Amino provides a simple API to do common tasks, while still being extensible. For example, to create a rectangle that loops back and forth in a webpage, just do this:

//setup
var runner = new Runner();
runner.setCanvas(document.getElementById('canvas'));

//create a rect filled with red and a black 5px border
var r = new Rect()
.set(10,20,50,50)
.setFill("red)
.setStroke("black")
.setStrokeWidth(5);
runner.setRoot(r);

//animate r.x from 0 -> 300 over 5.5 seconds, and repeat
runner.addAnim(new PropAnim(r, "x", 0, 300, 5.5).setLoop(true));

//kick off the animation
runner.start();

See the results on the Amino homepage here

PreviewScreenSnapz011.png

What can it do?

Amino can draw basic shapes (rects, circles, paths) and animate them using properties (width goes from 10 to 20 over 3.2 seconds) and callbacks. It also can buffer images to speed up common operations, manage varying framerates on different devices, and do Photoshop like image filtering (brightness, contrast, adjustment). And finally, Amino supports keyboard and mouse events on nodes within the scene, not just for DOM elements. In short, it's a portable scene graph for making interactive applications. Amino handles the hard work of processing input and scheduling the drawing to ensure a fast consistent framerate.

How about some examples?

I'm glad you asked. I've put together a couple of examples to show the variety of things you could do with Amino.


PlanetRover
is a simple multilevel sidescroller game with jumping and collision detection.


FirefoxScreenSnapz076.png

Big Fish, Little Fish
is a page from a hypothetical children's ebook, showing how text can be enriched with animation, images, and custom fonts.

FirefoxScreenSnapz075.png

This LineChart component is a super easy way to render graphical data in the browser with a minimal api.

FirefoxScreenSnapz074.png

These examples and more are available on the Amino Gallery Page.

How do I get it? What's the License

Amino is fully open source with the BSD license. You can download the source and binaries from here, or link directly to amino-1.0b.js from here in your app with a script tag.

If you'd like to contribute, or just want to let us know the cool stuff you are doing with Amino, please join the developer list or send an email to joshua at marinacci dot org

Related Topics >>