Starling is a GPU powered 2D Flash API. The library mimics the conventional Flash display tree architecture, however Starling “lives” entirely inside the Stage3D environment. That means that all objects are rendered directly by the GPU, which leads to a significant performance boost.

Starling’s API is not a direct 1:1 port of the Flash API. The classes were streamlined and optimized for working well with the GPU; common tasks in game development were simplified. Starling hides the Stage3D internals from developers, but makes it easy to access them for those who need to create custom display objects.

It has a huge set of features, such as multi-platform workflow (e.g. multi-resolution abstraction), hierarchical display tree, powerful event system, particle system, texture support for a bunch of different formats (including Adobe’s new ATF format), texture atlases, blend modes, tweens, multitouch, bitmap fonts, render texture and extensions.

Sample

package scenes
{
    import flash.media.Sound;

    import starling.core.Starling;
    import starling.display.MovieClip;
    import starling.events.Event;
    import starling.textures.Texture;

    public class MovieScene extends Scene
    {
        private var mMovie:MovieClip;

        public function MovieScene()
        {
            var frames:Vector. = Game.assets.getTextures("flight");
            mMovie = new MovieClip(frames, 15);

            // add sounds
            var stepSound:Sound = Game.assets.getSound("wing_flap");
            mMovie.setFrameSound(2, stepSound);

            // move the clip to the center and add it to the stage
            mMovie.x = Constants.CenterX - int(mMovie.width / 2);
            mMovie.y = Constants.CenterY - int(mMovie.height / 2);
            addChild(mMovie);

            // like any animation, the movie needs to be added to the juggler!
            // this is the recommended way to do that.
            addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
            addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage);
        }

        private function onAddedToStage():void
        {
            Starling.juggler.add(mMovie);
        }

        private function onRemovedFromStage():void
        {
            Starling.juggler.remove(mMovie);
        }

        public override function dispose():void
        {
            removeEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage);
            removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
            super.dispose();
        }
    }
}
2D . URL.