Entries RSS
image


Who is reading My blog

SPONSORS

新浪围脖

13

虚线画法

最近想做一个台球游戏,需要用到一个虚线,就稍微研究了下。

 

写的还有点问题,大概就这样,gap是虚线段和空白的长短,本来想可以控制虚线段和空白段个子的长短,为了简单直接就gap了,没有分开传参。

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
var s:Sprite = new Sprite();
addChild(s);
dotted = new DottedLine();
dotted.lineStyle(s, 2, 0xff8888, 5, 0.8);
dotted.moveTo(50, 50);
dotted.lineTo(100, 180);
dotted.lineTo(400, 380);

虚线类:

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package
{
	import flash.display.Sprite;
 
	/**
	 * ...
	 * @author ZHY
	 * @example DottedLine
	 * @QQ&Email:65270458@qq.com
	 */
	public class DottedLine extends Sprite
	{
		private var fromX:Number;
		private var fromY:Number;
		private var toX:Number;
		private var toY:Number;
 
		private var dottedThickness:Number;
		private var dottedColor:uint;
		private var dottedSpace:Number;
		private var dottedAlpha:Number;
 
		private var container:Sprite;
 
		public function lineStyle(con:Sprite, thickness:Number = 1, color:uint = 0,
		                            gap:int = 5, alpha:Number = 1) :void
		{
			container = con;
			dottedThickness = thickness;
			dottedColor = color;
			dottedSpace = gap;
			dottedAlpha = alpha;
		}
 
		public function moveTo(x:Number, y:Number):void
		{
			fromX = x;
			fromY = y;
		}
 
		public function lineTo(x:Number, y:Number):void
		{
			toX = x;
			toY = y;
			prepare();
		}
 
		public function prepare():void
		{
			container.graphics.moveTo(fromX, fromY);
			container.graphics.lineStyle(dottedThickness, dottedColor, dottedAlpha);
			drawDottedLine();
		}
 
		public function drawDottedLine():void
		{
			var angle:Number = Math.atan2(toY - fromY, toX - fromX);
			var xGap:Number = dottedSpace * Math.cos(angle);
			var yGap:Number = dottedSpace * Math.sin(angle);
 
			while( (( xGap >= 0 && fromX <= toX ) || ( xGap < 0 && fromX > toX) ))
			{
				container.graphics.moveTo(fromX, fromY);
				container.graphics.lineTo(fromX + xGap, fromY + yGap);
				fromX = fromX + 2 * xGap;
				fromY = fromY + 2 * yGap;
			}
		}
 
		public function clear():void
		{
			container.graphics.clear();
		}
 
	}
 
}

Down this DottedLine.as

Subscribe To Our Feed

enjoy this posts? subscribe to our feed please..

One Response to “虚线画法”

One Comment

  1. 阿泽 说:

    不是还要拐弯了吗?

    [回复]

Leave a Reply