flash on 2013-1-11

by mutantleg
♥0 | Line 70 | Modified 2013-01-17 17:49:58 | MIT License
play

ActionScript3 source code

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

package {
    import flash.text.TextField;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        
        public var deb:TextField;
        public var rect:Sprite;        
        public var r2:Sprite;
        
        public function FlashTest() {
            
            deb = new TextField();
            deb.text = "debug";
            addChild(deb);
            
            
            r2 = new Sprite();
            r2.graphics.clear();
            r2.graphics.lineStyle(2,0x5F5F5f);
            r2.graphics.drawCircle(0,0,4);
            r2.graphics.drawRect(-64,-16,128,32);
            addChild(r2);
            r2.x = 200;
            r2.y = 200;
            
            
            rect = new Sprite();
            
            rect.graphics.clear();
            rect.graphics.lineStyle(2,0);
            rect.graphics.drawCircle(0,0,4);
            rect.graphics.drawRect(-64,-16,128,32);
            
            addChild(rect);
            rect.x = 200;
            rect.y = 200;
            
            
            
            
            
            stage.addEventListener(Event.ENTER_FRAME, onEnter);
        }//ctor
        
        
        public function onEnter(e:Event):void
        {
            graphics.clear();
            graphics.lineStyle(2,0);
            graphics.drawCircle(mouseX, mouseY, 8);
            
            var ax:Number;
            var ay:Number;
            var fx:Number;
            var fy:Number;
            var px:Number;
            var py:Number;
            var dot:Number;
            var mx:Number;
            var my:Number;
            var mag:Number;
            var tx:Number;
            var ty:Number;
            var av:Number;
            
            //based on
            //http://gamedev.stackexchange.com/questions/19634/calculating-the-rotational-force-of-a-2d-sprite
            
            ax = mouseX - rect.x;
            ay = mouseY - rect.y;
            
            fx = 0;
            fy = -8;
            
            dot = (fx*ax + fy*ay) / (ax*ax+ay*ay);
                
            px = ax * dot;
            py = ay * dot;
            
            mx = fx - px;
            my = fy - py;
          
            mag = Math.sqrt( ax*ax + ay*ay );
              
            tx = mx;// * mag;
            ty = my;// * mag; 
            
            /*
            tx /= 30;
            ty /= 30;
            */
            graphics.moveTo(mouseX, mouseY);
            graphics.lineTo(mouseX+fx, mouseY+fy);
            
            graphics.moveTo(mouseX, mouseY);
            graphics.lineTo(mouseX+tx, mouseY+ty);
            
            av = Math.atan2(ty, tx) * (180.0/3.1415);
            
            //av += 360;
            
            //av *= 0.1;
            
            rect.rotation = av;
            
            deb.text = " " + av;
            
            
            /*
            graphics.moveTo(rect.x, rect.y);
            graphics.lineTo(mouseX, mouseY);
            
            var ax:Number;
            var ay:Number;
            
            ax = -16;
            ay = 0;
            
            graphics.moveTo(mouseX, mouseY);
            graphics.lineTo(mouseX+ax, mouseY+ay);
            
            var bx:Number;
            var by:Number;
            
            bx = rect.x - mouseX;
            by = rect.y - mouseY;
            
            var tx:Number;
            var ty:Number;
            
            tx = -by;
            ty = bx;
            
            graphics.lineStyle(2,0xFF0000);
            graphics.moveTo(mouseX, mouseY);
            graphics.lineTo(mouseX+tx, mouseY+ty);
            
            var dot:Number;
            var nxa:Number;
            var nya:Number;
            var nxt:Number;
            var nyt:Number;
            var mag:Number;
            
            mag = Math.sqrt(ax*ax+ay*ay);
            nxa = ax/mag;
            nya = ay/mag;
            
            mag = Math.sqrt(tx*tx+ty*ty);
            nxt = tx/mag;
            nyt = ty/mag;
            
            dot = nxt*nxa + nyt*nya;
            
            deb.text = "dot " + dot;
            */
           
                        
        }//onenter
        
    }//classend
}