1  /**
     2   * com.sekati.draw.Curve
     3   * @version 1.0.3
     4   * @author jason m horwitz | sekati.com
     5   * Copyright (C) 2007  jason m horwitz, Sekat LLC. All Rights Reserved.
     6   * Released under the MIT License: http://www.opensource.org/licenses/mit-license.php
     7   */
     8  
     9  import com.sekati.geom.Point;
    10  
    11  /**
    12   * Tweenable Curve Object
    13   */
    14  class com.sekati.draw.Curve {
    15  
    16  	private var _mc:MovieClip;
    17  	public var _p1:Point;
    18  	public var _p2:Point;
    19  	public var _c:Point;
    20  	public var _sw:Number;
    21  	public var _sc:Number;
    22  	public var _sa:Number;
    23  
    24  	/**
    25  	 * Curve Constructor
    26  	 * @param mc (MovieClip)
    27  	 * @param p1 (Point) point 1
    28  	 * @param p2 (Point) point 2
    29  	 * @param c (Point) curve point
    30  	 * @param strokeWeight (Number) line width [default: 1]
    31  	 * @param strokeColor (Number) line color [default: 0x000000]
    32  	 * @param strokeAlpha (Number) line alpha transparency [default: 100]
    33  	 * @return Void
    34  	 */
    35  	public function Curve(mc:MovieClip, p1:Point, p2:Point, c:Point, strokeWeight:Number, strokeColor:Number, strokeAlpha:Number) {
    36  		_mc = mc;
    37  		_sw = (!strokeWeight) ? undefined : strokeWeight;
    38  		_sc = (isNaN( strokeColor )) ? 0x000000 : strokeColor;
    39  		_sa = (isNaN( strokeAlpha )) ? 100 : strokeAlpha;
    40  		_p1 = p1;
    41  		_p2 = p2;
    42  		_c = c;
    43  		draw( );
    44  	}
    45  
    46  	/**
    47  	 * (Re)Draw Curve with current properties.
    48  	 * @return Void
    49  	 */
    50  	public function draw():Void {
    51  		_mc.clear( );
    52  		_mc.lineStyle( _sw, _sc, _sa, true, "none", "round", "round", 8 );
    53  		_mc.moveTo( _p1.x, _p1.y );
    54  		_mc.curveTo( _c.x, _c.y, _p2.x, _p2.y );
    55  	}	
    56  
    57  	public function get p1x():Number {
    58  		return _p1.x;	
    59  	}
    60  
    61  	public function set p1x(n:Number):Void {
    62  		_p1.x = n;
    63  		draw( );
    64  	}	
    65  
    66  	public function get p1y():Number {
    67  		return _p1.y;	
    68  	}
    69  
    70  	public function set p1y(n:Number):Void {
    71  		_p1.y = n;	
    72  		draw( );
    73  	}	
    74  
    75  	public function get p2x():Number {
    76  		return _p2.x;	
    77  	}
    78  
    79  	public function set p2x(n:Number):Void {
    80  		_p2.x = n;	
    81  		draw( );
    82  	}	
    83  
    84  	public function get p2y():Number {
    85  		return _p2.y;	
    86  	}
    87  
    88  	public function set p2y(n:Number):Void {
    89  		_p2.y = n;	
    90  		draw( );
    91  	}
    92  
    93  	public function get cx():Number {
    94  		return _c.x;	
    95  	}
    96  
    97  	public function set cx(n:Number):Void {
    98  		_c.x = n;	
    99  		draw( );
   100  	}
   101  
   102  	public function get cy():Number {
   103  		return _c.y;	
   104  	}
   105  
   106  	public function set cy(n:Number):Void {
   107  		_c.y = n;	
   108  		draw( );
   109  	}	
   110  }