• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 375
  • Last Modified:

Custom Class for 'Dashed Line' in AS3

Hi all, I am trying to create a custom class for Dashed Line.
I have the attached code in .as file and thr following code in .fla file :

import diagrammingtool.utils.DashedLine;
import flash.geom.Point;
var spt:Point = new Point(200,50);
var ept:Point = new Point(400,100);
var dl:DashedLine = new DashedLine(spt,ept,4,2);
addChild(dl);



There are no errors but the theres no dashed line appearing either. Can any one point me to the mistake I am making ? Thanks.
package diagrammingtool.utils{
       import flash.geom.Point;
	   import flash.display.Graphics;
	   import flash.display.Sprite;
	   import flash.display.Shape;
 
 
        // START CLASS
        public class DashedLine extends Sprite{            
                // CONSTRUCTOR              
               private var startPoint:Point = new Point();
			   private var endPoint:Point = new Point();
               public function DashedLine(sPoint:Point, ePoint:Point, len:Number, gap:Number) {
				   var child:Shape = new Shape();
				   var seglen:Number = len + gap ;
				   var deltax = sPoint.x-ePoint.x; 
				   var deltay = sPoint.y-ePoint.y; 
				   var dist:Number = Math.sqrt(deltax*deltax+deltay*deltay);
				   var noOfSegs:Number =  Math.floor(Math.abs(dist/seglen));
				   var angle:Number = Math.atan2(deltay,deltax);
				   var cx:Number = sPoint.x;
				   var cy:Number = sPoint.y;
				   // add these to cx, cy to get next seg start
				   deltax = Math.cos(angle)*seglen;
				   deltay = Math.sin(angle)*seglen;
				   // loop through each seg
				   for (var n:Number = 0; n < noOfSegs; n++) {
						child.graphics.moveTo(cx,cy);
						child.graphics.lineTo(cx+Math.cos(angle)*len,cy+Math.sin(angle)*len);
						cx += deltax;
						cy += deltay;
						trace(cx);
				   }
				   // handle last segment as it is likely to be partial
				   child.graphics.moveTo(cx,cy);
				   var delta:Number = Math.sqrt((ePoint.x-cx)*(ePoint.x-cx)+(ePoint.y-cy)*(ePoint.y-cy));
				   if(delta>len){
					   // segment ends in the gap, so draw a full dash
					   child.graphics.lineTo(cx+Math.cos(angle)*len,cy+Math.sin(angle)*len);
				   } else if(delta>0) {
					   // segment is shorter than dash so only draw what is needed
					   child.graphics.lineTo(cx+Math.cos(angle)*delta,cy+Math.sin(angle)*delta);
				   }
				   // move the pen to the end position
				   child.graphics.moveTo(ePoint.x,ePoint.y);
				   addChild(child);
               }
 
 
        }
        // END CLASS
}
// END PACKAGE

Open in new window

0
whatisittellme
Asked:
whatisittellme
  • 3
  • 2
1 Solution
 
Antonio EstradaTech Leader / Senior Web DeveloperCommented:
Here's an old AS2 class I ported to AS3 also a while back. It works fine, so you might as well check it out:

http://vulturous.110mb.com/eefiles/DashedLine.as

-V
0
 
whatisittellmeAuthor Commented:
Thank you. I tried using the one you sent with the following code on the .fla file. I might be doing something wrong, the dashed line doesnt show up :(



var dl = new DashedLine(000000,4,90,200,300,400,500,10,5);
stage.addChild(dl);

Open in new window

0
 
whatisittellmeAuthor Commented:
oops, my mistake...it works. the had given the coordinates that were way off the stage. figured out. thanks !
0
 
Antonio EstradaTech Leader / Senior Web DeveloperCommented:
Glad to help!

-V
0
 
whatisittellmeAuthor Commented:
Hi 'Vulturous'. Could you take a look at this question: http://www.experts-exchange.com/Software/Photos_Graphics/Web_Graphics/Macromedia_Flash/ActionScript/Q_24579146.html

I have a similar problem but in this case I want to implement so that it can be overlayed on google map/microsoft live maps using UMap(it is an Advanced Flash Component available for free download). I would greatly appreciate any help. Thanks !
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now