forked from: forked from: リマソン第2弾 (定義編)

by bradsedito forked from forked from: リマソン第2弾 (定義編) (diff: 25)
♥0 | Line 173 | Modified 2012-10-24 23:31:22 | MIT License
play

ActionScript3 source code

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






package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.text.TextField;
    import flash.net.navigateToURL;
    import flash.net.URLRequest;
    import flash.events.MouseEvent;
    import net.wonderfl.utils.WonderflSWFUrl;
    
    
    public class Main extends Sprite 
    {
        private var _banner:TextField;
        private var _tf:TextField;
        private var Li:Limacon;
        private var Ray:Sprite;
        
   
        public function Main():void 
        {
        [SWF(width="465",height="465",backgroundcolor="#000000")]

          Li = new Limacon(232, 90, 0);
          Li.color = 0x800000;
           Li.thickness = 2;
           Li.x = 232;
           Li.y = 232;
           Li.showCircle = true;
           Li.circleColor = 0x000000;
           Li.draw();
           addChild(Li);
            // ガイド用の直線
            Ray = new Sprite();
            Ray.graphics.clear();
            addChild(Ray);
            // 見出し用テキストフィールド
            _banner = new TextField();
            _banner.background = true;
            _banner.backgroundColor = 0x00ffff;
            _banner.text = "Can Anyone create a Flash SVG or HPGL plot file read view example ?!\n " ;//+ String() + "";
            _banner.x = 10;
            _banner.y = 2;
            _banner.textColor = 0x800000;
            _banner.width = 360;
            _banner.height = 20;
            _banner.alpha = 0.6
            addChild(_banner);
            
            
            var sp:Sprite = new Sprite;
            var tf = new TextField;
            tf.selectable = false;
            tf.mouseEnabled = false;
            tf.width = 200;
            tf.htmlText = "<u><b>Http://CStep.Luberth.com</b></u>";
            tf.y = 420;
            tf.x = 300;
            sp.graphics.beginFill(0, 0);
            sp.buttonMode = true;
            sp.graphics.drawRect(0, 0, tf.width, tf.height);
            sp.addEventListener(MouseEvent.CLICK, function () {
                navigateToURL(new URLRequest("Http://cstep.luberth.com"), "_blank");
            });
            sp.addChild(tf);
            addChild(sp);  
            
            
            var sp:Sprite = new Sprite;
            var tf = new TextField;
            tf.selectable = false;
            tf.mouseEnabled = false;
            tf.width = 200;
            tf.htmlText = "<u><b>Fork it & play with the source\nWonderFl build flash online\nClean my messy code</b></u>";
            tf.y = 420;
            tf.x = 30;
            sp.graphics.beginFill(0, 0);
            sp.buttonMode = true;
            sp.graphics.drawRect(0, 0, tf.width, tf.height);
            sp.addEventListener(MouseEvent.CLICK, function () {
                navigateToURL(new URLRequest("http://wonderfl.net/c/eDHa/fork"),"_blank");
            });
            sp.addChild(tf);
            addChild(sp);   
            
                     
            
            _tf = new TextField();
            _tf.text = "";
            _tf.x = 16;
            _tf.y = 40;
            _tf.width = 200;
            _tf.textColor = 0x000080;
            addChild(_tf);
           
            addEventListener(Event.ENTER_FRAME, _as_time_passes);
        }
        
      
        private function draw_ray():void {
            var dx:Number = mouseX - 232; // <dx,dy> is the orientation of the line
            var dy:Number = mouseY - 232;
            var nx:Number; // <nx,ny> is the orthogonal direction
            var ny:Number;
            var Ax:Number; // at <Ax,Ay>, the line crosses the boundary.
            var Ay:Number;
            var Bx:Number; // <Bx,By> is the other cross point.
            var By:Number;
    
            var compasx:Number;
            var compasy:Number;
            var deg:int;
            var rang:Number;
            var radius:Number;
       
       
            Ray.graphics.clear();
            Ray.graphics.lineStyle(1,0xff0000);
            // Draw only if <dx,dy> is not the zero vector...
            if (( dx != 0 ) || (dy != 0)) {
                
                
                Ray.graphics.moveTo(232,232);
                Ray.graphics.lineTo(mouseX,mouseY);
                Ray.graphics.lineTo(mouseX,232);
                Ray.graphics.lineTo(232,232);
                 
                //now i want  to draw a second compas like line
                //that is drawn by the degrees given by the mouse
                //so in top left screen a compas line
                //calculated from degrees given bij mouse 
                Ray.graphics.moveTo(232+175-30,232-175);
                Ray.graphics.lineTo(232+175+30,232-175);
                
                Ray.graphics.moveTo(232+175,232-175+30);
                Ray.graphics.lineTo(232+175,232-175-30);
   
   
                Ray.graphics.moveTo(232+175-30,232+150);
                Ray.graphics.lineTo(232+175+30,232+150);
                
                Ray.graphics.moveTo(232+175,232+150+30);
                Ray.graphics.lineTo(232+175,232+150-30); 
                //now i want  to draw a second compas like line
                //that is drawn by the degrees given by the mouse
                //so in top left screen a compas line
                //calculated from degrees given bij mouse
  
  //next draws top left compas from degrees given 
        
        deg = Math.round(Math.atan2(-(mouseY-232), mouseX-232) / Math.PI*180);
        if (deg < 0) deg = deg + 360;  // no negative degint  
                     
        rang = - deg * Math.PI*2 / 360;
        radius = 30;
        compasx = radius * Math.cos(rang);
        compasy = radius * Math.sin(rang);
        //draw compas line      compasx compasy  
        Ray.graphics.moveTo(232+175,232-175);
        Ray.graphics.lineTo(232+175+compasx,232-175+compasy);
                
        rang = deg * Math.PI*2 / 360;
        radius = 30;
        compasx = radius * Math.cos(rang);
        compasy = radius * Math.sin(rang);             
        Ray.graphics.moveTo(232+175,232+150);
        Ray.graphics.lineTo(232+175+compasx,232+150+compasy);       
         }
        }

        // マウスがステージにあれば原点から直線を引き、
        // 方向(角度)をテキストフィールドに表示します
        private function _as_time_passes(e:Event):void {
       var deg:int;
      //public var compasx;
       //public var compasy;
      //var radius;
        //var rang;
       
            draw_ray();
          
            deg = Math.round(Math.atan2(-(mouseY-232), mouseX-232) / Math.PI*180);
            
            if (deg < 0) deg = deg + 360;  // no negative degree
                     
            _tf.text = "direction = " + String(deg) + " deg \n"
            + "X = " + String(mouseX-232) + "\n"
            + "Y = " + String(-mouseY+232)+ "\n"
            + "Lenght = " + String( Math.sqrt((mouseX-232) * (mouseX-232) + (-mouseY+232) * (-mouseY+232))) + "\n";
        
         

        }

    } // end of class Main
} // end of package

/* ===================== */

import flash.display.Sprite;
class Limacon extends Sprite {
    public var d:Number; // Set by the constructor.
    public var a:Number; // ditto.
    public var phi:Number; // ditto. These three parameters are mandatory.
    public var thickness:uint; // default: 2
    public var color:uint; // default: 0x000000 ( black )
    public var showCircle:Boolean=true; // Want the circle displayed? (defalut: false) 
    public var showLine:Boolean; // Want the diameter displayed? (defalut: false) 
    public var circleColor:uint; // default: 0xffffff ( white )
    public var lineColor:uint; // default: 0xffffff ( white )
    // Draws the curve using given parameters
 
    public var compasx:Number;
    public var compasy:Number;
    public var deg:int;
    public var rang:Number;
    public var radius:Number;
    
    public function draw():void {
        var i:int;
        var t:Number;
        var r:Number;
        this.graphics.clear();
        this.graphics.lineStyle(thickness, color);
     
        //if ( showCircle ) {
            this.circleColor = 0xbbbbbb;
            this.graphics.lineStyle(1, this.circleColor);
            this.graphics.drawCircle(0 , 0, 100);
            this.graphics.drawCircle(0 , 0, 100*Math.sqrt(2));
       this.showCircle = true;
       // }
        
    }
    // Constructor...
    public function Limacon(_d:Number, _a:Number, _phi:Number):void {
        //this.d = _d;
        //this.a = _a;
        //this.phi = _phi;
       // this.thickness = 0;
      this.showCircle = false;
       // this.showLine = false;
       this.color = 0x00ff00;
       this.circleColor = 0x333333;
       // this.lineColor = 0xff00ff;
    }
}