O'Reilly logo

Introducing Starling by Thibault Imbert

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Plugging Starling with Box2D

The fantastic thing about Starling is its display list API, which makes it very easy to plug with existing frameworks. For instance, let’s say we would like to use the Box2D framework for adding some physics to our game?

You can learn more about Box2D here and download the library that we will use in the following example: http://box2dflash.sourceforge.net/

In this code, we make boxes fall on the ground with some simple gravity. Of course, everything is rendered through the GPU:

package
{
    import Box2D.Collision.Shapes.b2CircleShape;
    import Box2D.Collision.Shapes.b2PolygonShape;
    import Box2D.Common.Math.b2Vec2;
    import Box2D.Dynamics.b2Body;
    import Box2D.Dynamics.b2BodyDef;
    import Box2D.Dynamics.b2FixtureDef;
    import Box2D.Dynamics.b2World;

    import starling.display.DisplayObject;
    import starling.display.Quad;
    import starling.display.Sprite;
    import starling.events.Event;

    public class PhysicsTest extends Sprite
    {
        private var mMainMenu:Sprite;
        private var bodyDef:b2BodyDef;
        private var inc:int;

        public var m_world:b2World;
        public var m_velocityIterations:int = 10;
        public var m_positionIterations:int = 10;
        public var m_timeStep:Number = 1.0/30.0;

        public function PhysicsTest()
        {
            addEventListener(Event.ADDED_TO_STAGE, onAdded);
        }

        private function onAdded (e:Event):void
        {
            // Define the gravity vector
            var gravity:b2Vec2 = new b2Vec2(0.0, 10.0);

            // Allow bodies to sleep
            var doSleep:Boolean = true;

            // Construct a world object
            m_world = new b2World( gravity, doSleep); ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required