Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3248251
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类: 系统运维

2011-11-05 10:00:46

1.简介
       继承关系:SolidColorStroke ->EventDispatcher ->Object
       SolidColorStroke 类定义线条的属性。您可以在 MXML 中定义 SolidColorStroke 对象,但是必须将该 SolidColorStroke 附加到其他对象上,才能在应用程序中显示出来。以下示例首先定义了两个 SolidColorStroke 对象,然后将其应用于 LineChart 控件的 horizontalAxisRenderer 中:
  1. ...
  2.   <mx:SolidColorStroke id="ticks" color="0xFF0000" weight="1"/>
  3.   <mx:SolidColorStroke id="mticks" color="0x0000FF" weight="1"/>
  4.  
  5.   <mx:LineChart id="mychart" dataProvider="{ndxa}">
  6.       <mx:horizontalAxisRenderer>
  7.           <mx:AxisRenderer placement="bottom" canDropLabels="true">
  8.               <mx:tickStroke>{ticks}</mx:tickStroke>
  9.               <mx:minorTickStroke>{mticks}</mx:minorTickStroke>
  10.           </mx:AxisRenderer>
  11.       </mx:horizontalAxisRenderer>
  12.   </LineChart>


完全属性定义:

2.常见属性和方法
2.1 alpha : Number
线条的透明度。可能的值为 0.0(不可见)到 1.0(不透明)。
默认值为 1.0.。
此属性可用作数据绑定的源。修改此属性后,将分派 propertyChange 事件。

2.2 caps : String
指定线条末端处端点类型。有效值为:CapsStyle.ROUND、CapsStyle.SQUARE 和 CapsStyle.NONE。
默认值为 CapsStyle.ROUND。
此属性可用作数据绑定的源。修改此属性后,将分派 propertyChange 事件。

2.3 color : uint
线条颜色。默认值为 0x000000 (black).。
此属性可用作数据绑定的源。修改此属性后,将分派 propertyChange 事件。

2.4 joints : String
指定用于拐角的连接外观的类型。有效值为:JointStyle.ROUND、JointStyle.MITER 和 JointStyle.BEVEL。
默认值为 JointStyle.ROUND。
此属性可用作数据绑定的源。修改此属性后,将分派 propertyChange 事件。

2.5 miterLimit : Number
指示将在哪个限制位置开始进行斜角。有效值范围是 0 到 255。
默认值为 3。
此属性可用作数据绑定的源。修改此属性后,将分派 propertyChange 事件。

2.6 pixelHinting : Boolean
指定是否提示笔触采用完整像素。此值同时影响曲线锚点的位置以及线条笔触大小本身。
默认值为 false。
此属性可用作数据绑定的源。修改此属性后,将分派 propertyChange 事件。

2.7 scaleMode : String
LineScaleMode 类中的一个值,指定要使用的缩放模式。有效值为:
    LineScaleMode.NORMAL—始终在缩放对象时缩放线条的粗细(默认值)。
    LineScaleMode.NONE—从不缩放线条粗细。
    LineScaleMode.VERTICAL—如果仅垂直缩放对象,则不缩放线条粗细。
    LineScaleMode.HORIZONTAL—如果仅水平缩放对象,则不缩放线条粗细。
默认值为 LineScaleMode.NORMAL。
此属性可用作数据绑定的源。修改此属性后,将分派 propertyChange 事件。

2.8 weight : Number
线条粗细(以像素为单位)。对于很多图表,默认值都为 1 个像素。
此属性可用作数据绑定的源。修改此属性后,将分派 propertyChange 事件。

3源代码
  1. package mx.graphics
  2. {
  3.  
  4. import flash.display.CapsStyle;
  5. import flash.display.Graphics;
  6. import flash.display.GraphicsSolidFill;
  7. import flash.display.GraphicsStroke;
  8. import flash.display.JointStyle;
  9. import flash.events.EventDispatcher;
  10. import flash.geom.Point;
  11. import flash.geom.Rectangle;

  12. import mx.events.PropertyChangeEvent;

  13. public class SolidColorStroke extends EventDispatcher implements IStroke
  14. {
  15.     include "../core/Version.as";
  16.     /**
  17.      * 构造函数
  18.      */
  19.     public function SolidColorStroke(color:uint = 0x000000,
  20.                                      weight:Number = 1,
  21.                                      alpha:Number = 1.0,
  22.                                      pixelHinting:Boolean = false,
  23.                                      scaleMode:String = "normal",
  24.                                      caps:String = "round",
  25.                                      joints:String = "round",
  26.                                      miterLimit:Number = 3)   {
  27.         super();

  28.         this.color = color;
  29.         this._weight = weight;
  30.         this.alpha = alpha;
  31.         this.pixelHinting = pixelHinting;
  32.         this.scaleMode = scaleMode;
  33.         this.caps = caps;
  34.         this.joints = joints;
  35.         this.miterLimit = miterLimit;
  36.     }

  37.     // 属性 alpha
  38.     private var _alpha:Number = 0.0;
  39.     
  40.     [Bindable("propertyChange")]
  41.     [Inspectable(category="General")]
  42.     public function get alpha():Number
  43.     {
  44.         return _alpha;
  45.     }
  46.     public function set alpha(value:Number):void
  47.     {
  48.         var oldValue:Number = _alpha;
  49.         if (value != oldValue)
  50.         {
  51.             _alpha = value;
  52.             dispatchStrokeChangedEvent("alpha", oldValue, value);
  53.         }
  54.     }

  55.     // 属性 caps
  56.     private var _caps:String = CapsStyle.ROUND;
  57.     [Bindable("propertyChange")]
  58.     [Inspectable(category="General", enumeration="round,square,none", defaultValue="round")]
  59.     public function get caps():String
  60.     {
  61.         return _caps;
  62.     }
  63.     
  64.     public function set caps(value:String):void
  65.     {
  66.         var oldValue:String = _caps;
  67.         if (value != oldValue)
  68.         {
  69.             _caps = value;
  70.             dispatchStrokeChangedEvent("caps", oldValue, value);
  71.         }
  72.     }
  73.     
  74.     // 属性color
  75.     private var _color:uint = 0x000000;
  76.     [Bindable("propertyChange")]
  77.     [Inspectable(category="General", format="Color")]
  78.     public function get color():uint
  79.     {
  80.         return _color;
  81.     }
  82.     
  83.     public function set color(value:uint):void
  84.     {
  85.         var oldValue:uint = _color;
  86.         if (value != oldValue)
  87.         {
  88.             _color = value;
  89.             dispatchStrokeChangedEvent("color", oldValue, value);
  90.         }
  91.     }
  92.     
  93.     // 属性 joints
  94.     private var _joints:String = JointStyle.ROUND;
  95.     [Bindable("propertyChange")]
  96.     [Inspectable(category="General", enumeration="round,bevel,miter", defaultValue="round")]
  97.     public function get joints():String
  98.     {
  99.         return _joints;
  100.     }
  101.     
  102.     public function set joints(value:String):void
  103.     {
  104.         var oldValue:String = _joints;
  105.         if (value != oldValue)
  106.         {
  107.             _joints = value;
  108.             dispatchStrokeChangedEvent("joints", oldValue, value);
  109.         }
  110.     }
  111.     
  112.     // 属性miterLimit
  113.     private var _miterLimit:Number = 3;
  114.     [Bindable("propertyChange")]
  115.     [Inspectable(category="General", minValue="1.0", maxValue="255.0")]
  116.     public function get miterLimit():Number
  117.     {
  118.         return _miterLimit;
  119.     }
  120.     
  121.     public function set miterLimit(value:Number):void
  122.     {
  123.         var oldValue:Number = _miterLimit;
  124.         if (value != oldValue)
  125.         {
  126.             _miterLimit = value;
  127.             dispatchStrokeChangedEvent("miterLimit", oldValue, value);
  128.         }
  129.     }

  130.     // 属性pixelHinting
  131.     private var _pixelHinting:Boolean = false;
  132.     [Bindable("propertyChange")]
  133.     [Inspectable(category="General")]
  134.     public function get pixelHinting():Boolean
  135.     {
  136.         return _pixelHinting;
  137.     }
  138.     
  139.     public function set pixelHinting(value:Boolean):void
  140.     {
  141.         var oldValue:Boolean = _pixelHinting;
  142.         if (value != oldValue)
  143.         {
  144.             _pixelHinting = value;
  145.             dispatchStrokeChangedEvent("pixelHinting", oldValue, value);
  146.         }
  147.     }
  148.     
  149.     // 属性 scaleMode
  150.     private var _scaleMode:String = "normal";
  151.     [Bindable("propertyChange")]
  152.     [Inspectable(category="General", enumeration="normal,vertical,horizontal,none", defaultValue="normal")]
  153.     public function get scaleMode():String
  154.     {
  155.         return _scaleMode;
  156.     }
  157.     
  158.     public function set scaleMode(value:String):void
  159.     {
  160.         var oldValue:String = _scaleMode;
  161.         if (value != oldValue)
  162.         {
  163.             _scaleMode = value;
  164.             dispatchStrokeChangedEvent("scaleMode", oldValue, value);
  165.         }
  166.     }

  167.     // 属性weight
  168.     public function get weight():Number
  169.     {
  170.         return _weight;
  171.     }
  172.     
  173.     public function set weight(value:Number):void
  174.     {
  175.         var oldValue:Number = _weight;
  176.         if (value != oldValue)
  177.         {
  178.             _weight = value;
  179.             dispatchStrokeChangedEvent("weight", oldValue, value);
  180.         }
  181.     }

  182.     /**
  183.      * @inheritDoc
  184.      *
  185.      * @langversion 3.0
  186.      * @playerversion Flash 9
  187.      * @playerversion AIR 1.1
  188.      * @productversion Flex 3
  189.      */
  190.     public function apply(graphics:Graphics, targetBounds:Rectangle, targetOrigin:Point):void
  191.     {
  192.         graphics.lineStyle(weight, color, alpha, pixelHinting,
  193.                     scaleMode, caps, joints, miterLimit);
  194.     }
  195.     
  196.     /**
  197.      *继承接口IStroke
  198.      */
  199.     public function createGraphicsStroke(targetBounds:Rectangle, targetOrigin:Point):GraphicsStroke
  200.     {
  201.         // 构造对象 GraphicsStroke 并设置其所有属性
  202.         var graphicsStroke:GraphicsStroke = new GraphicsStroke();
  203.         graphicsStroke.thickness = weight;
  204.         graphicsStroke.miterLimit = miterLimit;
  205.         graphicsStroke.pixelHinting = pixelHinting;
  206.         graphicsStroke.scaleMode = scaleMode;
  207.                 
  208.         // 在 Drawing API-2 中有个bug, caps 属性用none代替round
  209.         graphicsStroke.caps = (!caps) ? CapsStyle.ROUND : caps;
  210.           
  211.         // 给GraphicsStroke的fill属性赋值一个 GraphicsSolidFill 对象(属性为alpha,color)
  212.         var graphicsSolidFill:GraphicsSolidFill = new GraphicsSolidFill();
  213.         graphicsSolidFill.color = color;
  214.         graphicsSolidFill.alpha = alpha;
  215.         graphicsStroke.fill = graphicsSolidFill;
  216.         
  217.         return graphicsStroke;
  218.     }
  219.     
  220.     private function dispatchStrokeChangedEvent(prop:String, oldValue:*,  value:*):void
  221.     {
  222.         if (hasEventListener("propertyChange"))
  223.             dispatchEvent(PropertyChangeEvent.createUpdateEvent(this, prop,
  224.                 oldValue, value));
  225.     }
  226. }

  227. }


参考文献
1.
2.
阅读(2305) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~