用ActionScript画虚线

  /*-------------------------------------------------------------
mc.dashTo is a method for drawing dashed (and dotted)
lines. I made this to extend the lineTo function because it
doesn?t have the cutom line types that the in program
line tool has. To make a dotted line, specify a dash length
between .5 and 1.
-------------------------------------------------------------*/

MovieClip . prototype .dashTo = function (startx , starty , endx , endy , len , gap ) {
// ==============
// mc.dashTo() - by Ric Ewing (ric@formequalsfunction.com) - version 1.2 - 5.3.2002
//
// startx, starty = beginning of dashed line
// endx, endy = end of dashed line
// len = length of dash
// gap = length of gap between dashes
// ==============
//
// if too few arguments, bail
if ( arguments . length < 6 ) {
return false ;
}
// init vars
var seglength , deltax , deltay , segs , cx , cy ;
// calculate the legnth of a segment
seglength = len + gap ;
// calculate the length of the dashed line
deltax = endx - startx ;
deltay = endy - starty ;
delta = Math . sqrt ( (deltax * deltax ) + (deltay * deltay ) ) ;
// calculate the number of segments needed
segs = Math . floor ( Math . abs (delta / seglength ) ) ;
// get the angle of the line in radians
radians = Math . atan2 (deltay ,deltax ) ;
// start the line here
cx = startx ;
cy = starty ;
// add these to cx, cy to get next seg start
deltax = Math . cos (radians ) *seglength ;
deltay = Math . sin (radians ) *seglength ;
// loop through each seg
for ( var n = 0 ; n < segs ; n + + ) {
this . moveTo (cx ,cy ) ;
this . lineTo (cx + Math . cos (radians ) *len ,cy + Math . sin (radians ) *len ) ;
cx + = deltax ;
cy + = deltay ;
}
// handle last segment as it is likely to be partial
this . moveTo (cx ,cy ) ;
delta = Math . sqrt ( (endx -cx ) * (endx -cx ) + (endy -cy ) * (endy -cy ) ) ;
if (delta >len ) {
// segment ends in the gap, so draw a full dash
this . lineTo (cx + Math . cos (radians ) *len ,cy + Math . sin (radians ) *len ) ;
} else if (delta >0 ) {
// segment is shorter than dash so only draw what is needed
this . lineTo (cx + Math . cos (radians ) *delta ,cy + Math . sin (radians ) *delta ) ;
}
// move the pen to the end position
this . moveTo (endx ,endy ) ;
} ;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值