DashLine

此博客展示了一段XML代码,用于实现绘制虚线的功能。代码中定义了变量和函数,根据标志位决定绘制水平或垂直虚线,还包含了绘制虚线的具体算法,通过计算坐标和循环操作完成虚线绘制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?xml version="1.0" encoding="utf-8"?>
<mx:Label xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;

//if flag is true,draw horizon line ,else vertical line.
[Bindable]
public var flag : Boolean = true;

override protected function updateDisplayList(unscaledWidth : Number, unscaledHeight : Number) : void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
/* var num : Array = [2,3];
dashLineToPattern(this, 10000,50,60,50,num); */
var labelX:Number = this.x;
var labelY:Number = this.y;
drawDashLineType(flag, labelX, labelY);
}

public function drawDashLineType(flag : Boolean, labelX : Number, labelY : Number) : void
{
var ToX:Number;
var ToY:Number ;
if(flag)
{
ToX = labelX + this.width; //draw horizon dash line
ToY = labelY;
}
else
{
ToX = labelX;
ToY = labelY + this.height; //draw vertical dash line
}
var pattern:Array = new Array;
pattern.push(2,3);
dashLineToPattern(this, labelX, labelY, ToX, ToY, pattern);
}

public static function dashLineToPattern(target:UIComponent, x1:Number, y1:Number,x2:Number, y2:Number,pattern:Array):void
{
target.graphics.lineStyle(1,0x000000);
var x:Number = x2 - x1;
var y:Number = y2 - y1;
var hyp:Number = Math.sqrt((x)*(x) + (y)*(y));

var units:Number = hyp/(pattern[0]+pattern[1]);
var dashSpaceRatio:Number = pattern[0]/(pattern[0]+pattern[1]);

var dashX:Number = (x/units)*dashSpaceRatio;
var spaceX:Number = (x/units)-dashX;
var dashY:Number = (y/units)*dashSpaceRatio;
var spaceY:Number = (y/units)-dashY;

target.graphics.moveTo(x1, y1);

while (hyp > 0)
{
x1 += dashX;
y1 += dashY;
hyp -= pattern[0];
if (hyp < 0)
{
x1 = x2;
y1 = y2;
}

target.graphics.lineTo(x1, y1);
x1 += spaceX;
y1 += spaceY;
target.graphics.moveTo(x1, y1);
hyp -= pattern[1];
}
target.graphics.moveTo(x2, y2);
}
]]>
</mx:Script>
</mx:Label>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值