flash as3 画虚线参考

 

仅供参考:

package{
import flash.display.Graphics;
import flash.geom.Rectangle;
public 
function  drawDottedRect(graphics:Graphics, rect:Rectangle){
var  sizeOfDash:Number  =   5 // size of each dash
graphics.clear();
graphics.lineStyle(
1 , 0x000000 , 100 );
var  iterations:Number  =  Math.ceil(Math.abs(rect.right  -  rect.left) / (sizeOfDash*2));
for ( var  i = 0 ;i < iterations;i ++ ){ // Draw top
if (rect.right  <  rect.left){
var  moveDist:Number  =   - (sizeOfDash * 2 * i);
var  dash:Number  =   - (sizeOfDash);
}
else {
var  moveDist:Number  =  sizeOfDash * 2 * i;
var  dash:Number  =  sizeOfDash;
}
graphics.moveTo(rect.left 
+  moveDist,rect.top);
if (i  ==  iterations - 1 ){
graphics.lineTo(rect.right,rect.top);
}
else {
graphics.lineTo(rect.left 
+  moveDist  +  dash,rect.top);
}
}
for ( var  i = 0 ;i < iterations;i ++ ){ // Draw Bottom
if (rect.right  <  rect.left){
var  moveDist:Number  =   - (sizeOfDash * 2 * i);
var  dash:Number  =   - (sizeOfDash);
}
else {
var  moveDist:Number  =  sizeOfDash * 2 * i;
var  dash:Number  =  sizeOfDash;
}
graphics.moveTo(rect.left 
+  moveDist,rect.bottom);
if (i  ==  iterations - 1 ){
graphics.lineTo(rect.right,rect.bottom);
}
else {
graphics.lineTo(rect.left 
+  moveDist  +  dash,rect.bottom);
}
}
var  iterations:Number  =  Math.ceil(Math.abs(rect.bottom  -  rect.top) / (sizeOfDash*2));
for ( var  i = 0 ;i < iterations;i ++ ){ // Draw left
if (rect.top  >  rect.bottom){
var  moveDist:Number  =   - (sizeOfDash * 2 * i);
var  dash:Number  =   - (sizeOfDash);
}
else {
var  moveDist:Number  =  sizeOfDash * 2 * i;
var  dash:Number  =  sizeOfDash;
}
graphics.moveTo(rect.left,rect.top 
+  moveDist);
if (i  ==  iterations - 1 ){
graphics.lineTo(rect.left,rect.bottom);
}
else {
graphics.lineTo(rect.left,rect.top 
+  moveDist  +  dash);
}
}
for ( var  i = 0 ;i < iterations;i ++ ){ // Draw right
if (rect.top  >  rect.bottom){
var  moveDist:Number  =   - (sizeOfDash * 2 * i);
var  dash:Number  =   - (sizeOfDash);
}
else {
var  moveDist:Number  =  sizeOfDash * 2 * i;
var  dash:Number  =  sizeOfDash;
}
graphics.moveTo(rect.right,rect.top 
+  moveDist);
if (i  ==  iterations - 1 ){
graphics.lineTo(rect.right,rect.bottom);
}
else {
graphics.lineTo(rect.right,rect.top 
+  moveDist  +  dash);
}
}
}
}

 

附:

  public function drawDashedLine(p:IPen, xA:int,  yA:int,  xB:int,   yB:int,  dashLength:int):void
    {
        var u1:Number = xB - xA;
        var u2:Number = yB - yA;
        var length:Number =  Math.sqrt(u1 * u1 + u2 * u2);
        var n:int = Math.round( (length / dashLength + 1) / 2);//得到分割的块数
        var v1:Number = u1 / (2 * n - 1);//得到X方向增量
        var v2:Number = u2 / (2 * n - 1);//得到Y方向增量
        for (var i:uint = 0; i < n; i++)
        {
            var x1:Number = xA + 2 * i * v1;
            var y1:Number = yA + 2 * i * v2;
            var x2:Number = x1 + v1;
            var y2:Number = y1 + v2;
            drawLine(p,Math.round(x1), Math.round(y1),Math.round(x2), Math.round(y2));
        }
    }

你可能感兴趣的:(Flash)