StageXL is a Dart library intended for Flash developers who want to migrate their projects as well as their skills to HTML5. The lib provides the familiar Flash API built on top of the Dart programming language, which is very similar to ActionScript 3.
It uses the same class hierarchy as Flash does, so it’s possible to extend  UI-objects from DisplayObject
(Container) or just work with the Sprite
class, for instance. It has classes such as Bitmap
, which are DisplayObjects
that can be scalable, rotatable, movable and blendable with the familiar properties like x
, y
, rotation
, scaleX
, scaleY
and alpha
.
The lib also has some great addition, such as the modern Dart event system, a built-in resource manager and an abstraction of  the Web Audio API.
Sample
// Events mySprite.addEventListener(Event.ENTER_FRAME, enterFrameListener); mySprite.addEventListener(MouseEvent.CLICK, mouseClickListener, useCapture:true); var subscription1 = mySprite.onEnterFrame.listen(enterFrameListener); var subscription2 = mySprite.onMouseClick.listen(mouseClickListener); var subscription3 = mySprite.on("customEvent").listen(customEventListener); subscription1.cancel(); // equals removeEventListener(...) subscription2.pause(); // pause receiving events subscription2.resume(); // resume receiving events // Text var textField = new TextField(); textField.defaultTextFormat = new TextFormat('Spicy Rice', 30, Color.Black); textField.text = 'The quick brown fox jumps over the lazy dog.' textField.x = 20; textField.y = 20; textField.width = 100; textField.height = 50; textField.wordWrap = true; addChild(textField); // Sound // The ResourceManager substitutes embedded resources of Flash. var resourceManager = new ResourceManager(); resourceManager.addSound("plop", "sounds/plop.mp3"); // loads ogg-file in Firefox! var sound = resourceManager.getSound("plop"); var soundTransform = new SoundTransform(0.5); var soundChannel = sound.play(false, soundTransform); // Filters var spaceShip = new SpaceShip(); spaceShip.x = 100; spaceShip.y = 50; spaceShip.filters = [ new ColorMatrixFilter.grayscale(), new GlowFilter(Color.Yellow, 1.0, 20, 20)]; spaceShip.applyCache(0, 0, 200, 80); spaceShip.addTo(stage); // Juggler var tween = new Tween(sprite, 2.0, TransitionFunction.easeOutBounce); tween.animate.x.to(700); tween.animate.y.to(500); tween.delay = 1.0; tween.onComplete = () => sprite.removeFromParent(); renderLoop.juggler.add(tween); // Resource manager var resourceManager = new ResourceManager() ..addBitmapData('dog', 'images/dog.png') ..addSound('plop', 'sounds/plop.mp3') ..addTextureAtlas('fl', 'images/flowers.json', TextureAtlasFormat.JSONARRAY); resourceManager.load().then((result) { var dog = resourceManager.getBitmapData('dog'); var plop = resourceManager.getSound('plop'); var flowers = resourceManager.getTextureAtlas('fl'); var daisy = flowers.getBitmapData('daisy'); });
DartFlash, a #Flash #AS3 API build on top of #Dart – http://t.co/zeI6qq3Q