forked from: forked from: Box2D Magnet

by ohisama
♥0 | Line 41 | Modified 2013-02-26 12:54:47 | MIT License
play

ActionScript3 source code

/**
 * Copyright ohisama ( http://wonderfl.net/user/ohisama )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/Zvt8
 */

// forked from luciano.crescente's forked from: Box2D Magnet
// forked from shapevent's Box2D Magnet
package 
{
    import flash.display.*;
    import flash.events.*;
    import com.actionsnippet.qbox.*;
    import Box2D.Common.Math.*;
    public class FlashTest extends MovieClip 
    {
        private var sim : QuickBox2D;
        private var big : QuickObject;
        private var little : QuickObject;
        private var dir : b2Vec2;
        public function FlashTest() 
        {
            sim = new QuickBox2D(this);
            sim.createStageWalls();
            big = sim.addBox({x : 7, y : 5, density : 0, friction : 0.5});
            little = sim.addCircle({x : 3, y : 12, radius : 1, density : 0.1, friction : 5});
            sim.start();
            addEventListener(Event.ENTER_FRAME, onLoop);
            dir = new b2Vec2();
        }
        private function onLoop(evt : Event) : void
        {
            var ang : Number = angle(big, little);
            var maxDist : Number = 100;
            var intensity : Number = 2;
            var currVel : b2Vec2 = little.body.GetLinearVelocity();
            dir.x = currVel.x + intensity * Math.cos(ang);
            dir.y = currVel.y + intensity * Math.sin(ang);
            big.angle  += 0.05;
            little.body.SetLinearVelocity(dir);
        }
        private function angle(a : QuickObject, b : QuickObject) : Number
        {
          var dx : Number = a.x - b.x;
          var dy : Number = a.y - b.y;
          return Math.atan2(dy, dx);  
        }
    }
}