FLEX 画虚线

 


实例运行效果如下图

图片

源码如下:

画线类:

MyDashLine.as

 

package ascomponent

{

import flash.display.Graphics;

import flash.display.Sprite;

import flash.geom.Point;

import mx.core.UIComponent;

import spark.core.SpriteVisualElement;

public class MyDashLine 

/* 虚线 */

public static const DASHLINE:String = "dashLine";

/* 实线 */

public static const REALLINE:String = "realLine";

private var lines:SpriteVisualElement = new SpriteVisualElement(); 

private var component:UIComponent = new UIComponent(); 

public function MyDashLine() 

lines = new SpriteVisualElement(); 

component = new UIComponent(); 

/*init()函数参数注解: 

* 1、shuliang    虚线的条数 

* 2、lineColor   虚线的颜色 

* 3、lineAlpha   虚线的alpha值 

* 4、fromX       虚线起始点的x轴的值 

* 5、fromY       虚线起始点的y轴的值 

* 6、toX         虚线末点的x轴的值 

* 7、toY         虚线末点的y轴的值 

* 8、pointWidth 单个点的厚度 

* 9、pointLength 单个点的长度 

* 10、twoPointDistance 两个点之间的间隔 

* 11、secondColor 虚线分段颜色,默认白色

*/ 

public function init(shuliang:Number, lineColor:uint, 

 lineAlpha:Number, fromX:Number, fromY:Number, toX:Number, 

 toY:Number, pointWidth:Number, pointLength:Number, 

 twoPointDistance:Number, type:String="dashLine", secondColor:uint=0xFFFFFF):UIComponent

drawDashed(lines.graphics, lineColor, lineAlpha, new Point(fromX, fromY), 

new Point(toX, toY), pointWidth, pointLength, twoPointDistance, type, secondColor); 

return component; 

private function drawDashed(graphics:Graphics, lineColor:uint, lineAlpha:Number, 

p1:Point, p2:Point, pointWidth:Number, 

pointLength:Number, twoPointDistance:Number, type:String, secondColor:uint):void

var max:Number = Point.distance(p1, p2); 

var dis:Number = 0; 

var p3:Point; 

var p4:Point; 

switch(type)

{

case DASHLINE:

var p5:Point = p1;

while(dis < max){ 

p3 = Point.interpolate(p2, p1, dis / max); 

dis += pointLength; 

if(dis > max){ 

dis = max; 

p4 = Point.interpolate(p2, p1, dis / max);

graphics.lineStyle(pointWidth, secondColor, lineAlpha); 

lines.graphics.moveTo(p5.x, p5.y);

lines.graphics.lineTo(p3.x, p3.y);

graphics.lineStyle(pointWidth, lineColor, lineAlpha); 

lines.graphics.moveTo(p3.x, p3.y); 

lines.graphics.lineTo(p4.x, p4.y); 

p5 = p4;

dis += twoPointDistance; 

}

break;

default:

case REALLINE:

with(graphics)

{

lineStyle(pointWidth, lineColor, lineAlpha);

moveTo(p1.x, p2.y);

lineTo(p2.x, p2.y);

}

break;

}

component.addChild(lines); 

}


应用:

 

<?xml version="1.0" encoding="utf-8"?>

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 

xmlns:s="library://ns.adobe.com/flex/spark" 

xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" 

xmlns:local="*"

creationComplete="{myInit()}"

>

<fx:Declarations>

<!-- Place non-visual elements (e.g., services, value objects) here -->

</fx:Declarations>

<fx:Script>

<![CDATA[

import ascomponent.MyDashLine;

private function myInit():void

var myDashLine:MyDashLine = new MyDashLine(); 

this.addElement(myDashLine.init(2, 0xFF0000, 0.9, 100, 100, 500, 100, 5, 30, 25, MyDashLine.DASHLINE, 0x000000)); 

this.addElement(myDashLine.init(2, 0xFF00FF, 0.9, 100, 200, 500, 200, 5, 30, 25, MyDashLine.REALLINE)); 

this.addElement(myDashLine.init(2, 0x00ff00, 0.9, 100, 300, 500, 300, 5, 30, 25)); 

this.addElement(myDashLine.init(2, 0xFF0000, 0.9, 100, 400, 500, 400, 5, 30, 25, MyDashLine.DASHLINE)); 

]]>

</fx:Script>

</s:Application>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值