用Action Script进行控制,可以随机画出各种图形,该教程为系列讲座,提供了许多很有用的AS代码……
使用方法:把代码拷到帧中就可看到效果
用鼠标任意画线
效果:可按住鼠标任意画线,可作简单的涂鸭工具
代码:
createEmptyMovieClip( " xian " , 1 );
with (xian) {
_root.onMouseMove = function () {
if (draw) {
_root.lineStyle( 0 , 0x000000 , 100 );
_root.lineTo(_root._xmouse,_root._ymouse);
}
};
_root.onMouseDown = function () {
draw = true ;
_root.moveTo(_root._xmouse,_root._ymouse);
};
_root.onMouseUp = function () {
draw = false ;
};
}
用鼠标任意画直线
效果:类似flash中的直线工具
代码:
createEmptyMovieClip( " line " , n);
with (line) {
lineStyle( 1 , 0x000000 , 100 );
moveTo( 0 , 0 );
lineTo( 100 , 100 );
line._visible = 0 ;
}
_root.onMouseDown = function () {
qidian_x = _root._xmouse;
qidian_y = _root._ymouse;
with (line) {
_x = qidian_x;
_y = qidian_y;
_xscale = 0 ;
_yscale = 0 ;
_visible = 1 ;
}
};
_root.onMouseMove = function () {
endX = _root._xmouse;
endY = _root._ymouse;
if (_root.line != " _root.line " && key.isdown( 16 )){
if (Math.abs(endX - qidian_x) > Math.abs(endY - qidian_y)){
setProperty(_root.line,_xscale, endX - qidian_x);
setProperty(_root.line,_yscale, endX - qidian_x);
} else {
setProperty(_root.line,_xscale, endY - qidian_y);
setProperty(_root.line,_yscale, endY - qidian_y);
}
} else {
setProperty(_root.line, _xscale,endX - qidian_x);
setProperty(_root.line, _yscale,endY - qidian_y);
}
};
_root.onMouseUp = function () {
if (_root._xmouse - qidian_x != 0 ) {
i ++ ;
Objectx = " Copy " add i;
duplicateMovieClip(_root.line,Objectx, i);
setProperty(Objectx, _x, qidian_x);
setProperty(Objectx, _y, qidian_y);
_root.i = i;
}
setProperty(_root.line, _visible, 0 );
};
用鼠标任意画矩形
效果:类似flash中的矩形工具
代码:
createEmptyMovieClip( " line " , n);
with (line) {
lineStyle( 0.1 , 0x000000 , 100 );
moveTo( 0 , 0 );
lineTo( 100 , 0 );
lineTo( 100 , 100 );
lineTo( 0 , 100 );
lineTo( 0 , 0 );
line._visible = 0 ;
}
_root.onMouseDown = function () {
qidian_x = _root._xmouse;
qidian_y = _root._ymouse;
with (line) {
_x = qidian_x;
_y = qidian_y;
_xscale = 0 ;
_yscale = 0 ;
_visible = 1 ;
}
};
_root.onMouseMove = function () {
endX = _root._xmouse;
endY = _root._ymouse;
if (_root.line != " _root.line " && key.isdown( 16 )){
if (Math.abs(endX - qidian_x) > Math.abs(endY - qidian_y)){
setProperty(_root.line,_xscale, endX - qidian_x);
setProperty(_root.line,_yscale, endX - qidian_x);
} else {
setProperty(_root.line,_xscale, endY - qidian_y);
setProperty(_root.line,_yscale, endY - qidian_y);
}
} else {
setProperty(_root.line, _xscale,endX - qidian_x);
setProperty(_root.line, _yscale,endY - qidian_y);
}
};
_root.onMouseUp = function () {
if (_root._xmouse - qidian_x != 0 ) {
i ++ ;
Objectx = " Copy " add i;
duplicateMovieClip(_root.line,Objectx, i);
setProperty(Objectx, _x, qidian_x);
setProperty(Objectx, _y, qidian_y);
_root.i = i;
}
setProperty(_root.line, _visible, 0 );
};
用鼠标任意画圆、椭圆
效果:类似flash中的工具
代码:
createEmptyMovieClip( " line " , n);
with (line) {
for (n = 1 ; n < 400 ; n ++ ) {
a = 50 * Math.cos(n * Math.PI / 180 );
b = 50 * Math.sin(n * Math.PI / 180 );
c = 50 * Math.cos((n + 1 ) * Math.PI / 180 );
d = 50 * Math.sin((n + 1 ) * Math.PI / 180 );
lineStyle( 0.01 , 0x000000 , 50 );
moveTo(a + 50 , b + 50 );
lineTo(c + 50 , d + 50 );
}
line._visible = 0 ;
}
_root.onMouseDown = function () {
qidian_x = _root._xmouse;
qidian_y = _root._ymouse;
with (line) {
_x = qidian_x;
_y = qidian_y;
_xscale = 0 ;
_yscale = 0 ;
_visible = 1 ;
}
};
_root.onMouseMove = function () {
endX = _root._xmouse;
endY = _root._ymouse;
if (_root.line != " _root.line " && key.isdown( 16 )){
if (Math.abs(endX - qidian_x) > Math.abs(endY - qidian_y)){
setProperty(_root.line,_xscale, endX - qidian_x);
setProperty(_root.line,_yscale, endX - qidian_x);
} else {
setProperty(_root.line,_xscale, endY - qidian_y);
setProperty(_root.line,_yscale, endY - qidian_y);
}
} else {
setProperty(_root.line, _xscale,endX - qidian_x);
setProperty(_root.line, _yscale,endY - qidian_y);
}
};
_root.onMouseUp = function () {
if (_root._xmouse - qidian_x != 0 ) {
i ++ ;
Objectx = " Copy " add i;
duplicateMovieClip(_root.line,Objectx, i);
setProperty(Objectx, _x, qidian_x);
setProperty(Objectx, _y, qidian_y);
_root.i = i;
}
setProperty(_root.line, _visible, 0 );
};
两定点画虚线
代码:
MovieClip.
prototype.dashTo = function (startPoint,
destPoint, dashLength, spaceLength) {
var x = destPoint.x - startPoint.x;
var y = destPoint.y - startPoint.y;
var hyp = Math.sqrt((x) * (x) + (y) * (y));
var units = hyp / (dashLength + spaceLength);
var dashSpaceRatio = dashLength /
(dashLength + spaceLength);
var dashX = (x / units) * dashSpaceRatio;
var spaceX = (x / units) - dashX;
var dashY = (y / units) * dashSpaceRatio;
var spaceY = (y / units) - dashY;
this .moveTo(startPoint.x, startPoint.y);
while (hyp > 0 ) {
startPoint.x += dashX;
startPoint.y += dashY;
hyp -= dashLength;
if (hyp < 0 ) {
startPoint.x = destPoint.x;
startPoint.y = destPoint.y;
}
this .lineTo(startPoint.x,startPoint.y);
startPoint.x += spaceX;
startPoint.y += spaceY;
this .moveTo(startPoint.x,startPoint.y);
hyp -= spaceLength;
}
this .moveTo(destPoint.x, destPoint.y);
};
createEmptyMovieClip( " DrawingSpace " , 1 );
with (DrawingSpace) {
lineStyle( 0 , 0x000000 , 100 );
dashTo({x: 300 , y: 0 }, {x: 0 , y: 400 }, 3 , 10 );
}
从一点到另一点画虚线
代码:
function DrawDottedLine(targetMC,
linewidth, fromX, fromY, toX, toY) {
// targetMC: 目标MovieClip德InstanceName;
// linewidth: 线宽;
// fromX, fromY: 从(fromX, fromY)处开始画;
// toX, toY: 画到(toX, toY)处;
var x, y;
eval(targetMC).lineStyle(lineWidth, 0x000000 , 100 );
// 线的颜色是黑色(0x000000)
eval(targetMC).moveTo(fromX, fromY);
x = fromX;
y = fromY;
while (x < toX) {
x = x + 4 / (Math.sqrt((toY - fromY) *
(toY - fromY) + (toX - fromX) * (toX - fromX))) * (toX - fromX);
y = y + 4 / (Math.sqrt((toY - fromY) *
(toY - fromY) + (toX - fromX) * (toX - fromX))) * (toY - fromY);
eval(targetMC).lineTo(x, y);
x = x + 4 / (Math.sqrt((toY - fromY) *
(toY - fromY) + (toX - fromX) * (toX - fromX))) * (toX - fromX);
y = y + 4 / (Math.sqrt((toY - fromY) *
(toY - fromY) + (toX - fromX) * (toX - fromX))) * (toY - fromY);
eval(targetMC).moveTo(x, y);
}
}
createEmptyMovieClip( " obj " , 1 ); // 建一空影片
DrawDottedLine( " _root.obj " , 1 , 10 , 10 , 200 , 300 );
// 调用函数
从场景的左上角到鼠标画虚线
代码:
x = 0 ;
y = 0 ; // 场景左上角的坐标
l = 0 ;
mx = _root._xmouse;
my = _root._ymouse; // 鼠标的坐标
ml = Math.sqrt(mx * mx + my * my); // 三角形的斜边长
_root.moveto( 0 , 0 ); // 画线的起点为场景左上角的坐标
_root.linestyle( 0.1 , 0x000000 , 100 );
// 下面用三角函数求出每一段虚线的端点坐标,
然后用循环重复画一条短线和空格。直到线的终点位置。
while (l < ml) {
l += 5 ;
// 短线的长
x = l * mx / ml;
y = l * my / ml;
_root.lineto(x, y);
// 将绘图点移动到相当于短线长的,且与短线在同一直线的位置。即一个空格
l += 5 ;
x = l * mx / ml;
y = l * my / ml;
_root.moveto(x, y);
}
不错的画线函数,自定义点、线的样式、填充
function Shape() {
this .points = [];
this .lines = false ;
tthis.filled = false ;
tthis.lineStyle = null ;
this .t = eval(_target);
}
Shape.prototype.addPoint = function (x, y) {
this .points[ this .points.length] = {x:x, y:y};
};
Shape.prototype.removePoint = function () {
this .points.pop();
};
Shape.prototype.draw = function (w, c, a) {
if ( this .points.length > 1 ) {
this .lineStyle = {w:w, c:c,a:a};
this .t.lineStyle(w, c, a); var i = 0 ;
var l = this .points.length;
while (i < l) {
this .t.lineTo( this .points[i].
x, this .points[i].y);
++ i;
}
this .lines = true ;
}
};
Shape.prototype.fill = function (c, a) {
if ( this .points.length > 1 ) {
if ( this .lines) {
this .clear();
this .t.lineStyle( this .lineStyle.w,
this .lineStyle.c, this .lineStyle.a);
} else {
this .t.lineStyle( 0 , 0xFFFFFF , 0 );
if ( this .filled){
this .clear();
}
}
this .t.beginFill(c, a);
var i = 0 ;
var l = this .points.length;
while (i < l) {
this .t.lineTo( this .points[i].x, this .points[i].y);
++ i;
}
this .t.endFill();
this .filled = true ;
}
};
Shape.prototype.getX = function () {
if ( this .points.length) {
return this .points[ this .points.length - 1 ].x;
}
};
Shape.prototype.getY = function () {
if ( this .points.length) {
return this .points[ this .points.length - 1 ].y;
}
};
g = new Shape();
g.addPoint( 0 , 100 );
g.addPoint( 100 , 100 );
g.addPoint( 100 , 0 );
g.addPoint( 0 , 0 );
g.fill( 0x339900 , 100 );
g.draw( 5 , 0x000000 , 100 );
系列讲座二,用AS脚本画羽毛、画正余弦、画心脏线、画螺旋线、画旋转的长方体、画烛光、画十四面体……
action画羽毛 作者:东方暖阳
代码:
onMouseDown = init;
function init() { // 创建羽毛,并设置羽毛各个参数及对函数的调用
feather = createEmptyMovieClip( " f " + i, 10000 + i ++ );
feather.swapDepths(Math.random() * 10000 );
feather._x = _xmouse;
feather._y = _ymouse;
feather._rotation = - 90 + Math.random() * 40 - 20 ;
col = Math.random() * 255 << 8 ;
radius = Math.random() * 20 + 20 ;
twist = Math.random() + . 5 ;
len = Math.random() * 100 + 50 ;
taper = Math.random() * . 05 + . 95 ;
x = 0 ;
onEnterFrame = grow;
}
function grow() { // 创建函数来定义羽毛的生长、
定义羽毛的停止生长条件
angle = Math.sin(fa += twist) * Math.PI / 4 ;
feather.moveTo(x, y);
feather.lineStyle( 1 , col, 50 );
feather.lineTo(x + Math.cos(angle) * radius,
y + Math.sin(angle) * radius);
radius *= taper;
if (x ++> len) {
delete onEnterFrame;
}
};
用as画圆:
代码:
思路:用不间断的呗线形成一个圆,实际上一个正360度多边形
应用:按此法可画任意的图形,如抛物线,螺旋线等,只需把方程修改即可,第2 个代码就是一个应用,画椭圆。
_root.onLoad = function () {
System.Usecodepage = true ;
// 这句我也不知道什么意思,加了以后就支持中文了,是从
“好笨”那里学来的,侦知道告诉我,谢谢
_root.createTextField( " txtLoad " , 151 , 50 , 280 , 400 , 30 );
// 建 一文本,名、层次、x、y、宽度、高度
_root.txtLoad.text = " 这是一个画线的应用。
zjs35制作。zjs35@163.com " ;
// 文本中的内容
daxiao = 100 ; // 圆的半径
yuanxin_x = 200 ;
yuanxin_y = 150 ; // 圆心的坐标
};
_root.onEnterFrame = function () {
a = daxiao * Math.cos(n * Math.PI / 180 );
b = daxiao * Math.sin(n * Math.PI / 180 ); // 根据圆的方程定义一个起点
c = daxiao * Math.cos((n + 1 ) * Math.PI / 180 );
d = daxiao * Math.sin((n + 1 ) * Math.PI / 180 ); // 定义一个终点
createEmptyMovieClip( " yuan " , n);
with (yuan) {
lineStyle( 2 , 0x000000 , 50 ); // 定义线的样式
moveTo(a + yuanxin_x, b + yuanxin_y);
lineTo(c + yuanxin_x, d + yuanxin_y); // 从起点到终点画线
}
if (n <= 360 ) {
n = n + 1 ;
} // 控制画线的长度,刚好一个圆,1表示画线的速度
};
画正多边形
代码:
这是一个画正多边形的程序,思路:把一个圆划分成n等分,把这些点呗接起来 ,下面是按钮上代码,另外在场景中建两可输入文本框,名为aa,bb。
on (release) {
daxiao = aa;
// 获取多边形的大小,以像素为单位
bianshu = bb;
// 获取边数,整数,从3开始,到无穷大,n多边形就是圆
jiaodu = 360 / bianshu;
// 得到每个等分的角度
for (n = 1 ; n <= bianshu; n ++ ) {
// for循环,由bianshu来控制循环的次数,也就是要画的多边形的边数
a = daxiao * math.cos(n * jiaodu * math.pi / 180 );
b = daxiao * math.sin(n * jiaodu * math.pi / 180 );
// 定义起点的坐标
c = daxiao * math.cos((n + 1 ) * jiaodu * math.pi / 180 );
d = daxiao * math.sin((n + 1 ) * jiaodu * math.pi / 180 );
// 定义终点的坐标
createEmptyMovieClip( " xian " , n);
// 创建一个空影片xian,n为层次
with (xian) {
lineStyle( 2 , 0xff0000 , 100 );
// 定义线的大小、颜色、透明度
moveTo(a + 300 , b + 200 );
lineTo(c + 300 , d + 200 ); // 从起点到终点画线
}
}
}
用as画字母F 作者:寒蓝
代码:
// 创建一个空的mc:
_root.createEmptyMovieClip( " myMc " , 0 );
// 定义mc的位置:
myMc._x = 100 ;
myMc._y = 50 ;
// 定义填充:
myMc.beginFill( 0xff0000 , 100 );
colors = [ 0xFF0000 , 0xffffff ];
alphas = [ 100 , 100 ];
ratios = [ 0 , 0xFF ];
matrix = {a: 50 , b: 0 , c: 0 , d: 0 ,
e: 50 , f: 0 , g: 50 , h: 50 , i: 1 };
myMc.beginGradientFill( " linear " ,
colors, alphas, ratios, matrix);
// 定义画线的样式:
myMc.lineStyle( 1 , 0xff0000 , 100 );
// 移动初始点:
myMc.moveTo( 100 , 0 );
// 连接曲线:
myMc.curveTo( 65 , 5 , 50 , 50 );
myMc.curveTo( 35 , 95 , 0 , 100 );
// 连接直线
myMc.lineTo( 0 , 120 );
myMc.curveTo( 45 , 110 , 62 , 70 );
myMc.lineTo( 90 , 70 );
myMc.lineTo( 90 , 50 );
myMc.lineTo( 70 , 50 );
myMc.curveTo( 80 , 20 , 100 , 20 );
myMc.lineTo( 100 , 0 );
// 结束填充:
myMc.endFill();
// 清除所画:
// myMc.clear();
画正弦线
代码:
root.onLoad
= function () {
daxiao = 100 ;
yuanxin_x = 00 ;
yuanxin_y = 150 ;
};
_root.onEnterFrame = function () {
a = daxiao * Math.sin(n * Math.PI / 180 );
c = daxiao * Math.sin((n + 1 ) * Math.PI / 180 );
createEmptyMovieClip( " xian " , n);
with (xian) {
lineStyle( 1 , 0x339900 , 50 );
moveTo(n + yuanxin_x, a + yuanxin_y);
lineTo(n + 1 + yuanxin_x, c + yuanxin_y);
}
if (n <= 400 ) {
n = n + 1 / 2 ;
}
}
画余弦线
代码:
_root.onLoad = function () {
daxiao = 100 ;
yuanxin_x = 00 ;
yuanxin_y = 150 ;
};
_root.onEnterFrame = function () {
a = daxiao * Math.cos(n * Math.PI / 180 );
c = daxiao * Math.cos((n + 1 ) * Math.PI / 180 );
createEmptyMovieClip( " yuan " , n);
with (yuan) {
lineStyle( 1 , 0x000000 , 50 );
moveTo(n + yuanxin_x, a + yuanxin_y);
lineTo(n + 1 + yuanxin_x, c + yuanxin_y);
}
if (n <= 400 ) {
n = n + 1 / 2 ;
}
};
画心脏线
代码:
这是一个用MX新增功能画线的例子,比在5中用点复制法画线简单多了,用此方法,可动态画数学中所有的图形。
_root.onLoad = function () {
daxiao = 40 ;
// 设定心脏线的大小
};
_root.onEnterFrame = function () {
a = daxiao * ( 2 * Math.cos(n * Math.PI / 180 )
+ Math.cos( 2 * (n * Math.PI / 180 )));
// 通过心脏线的方程定义起点的x坐标
b = daxiao * ( 2 * Math.sin(n * Math.PI / 180 )
+ Math.sin( 2 * (n * Math.PI / 180 )));
// 通过心脏线的方程定义起点的y坐标
c = daxiao * ( 2 * Math.cos((n + 1 ) * Math.PI / 180 )
+ Math.cos( 2 * (( 1 + n) * Math.PI / 180 )));
d = daxiao * ( 2 * Math.sin((n + 1 ) * Math.PI / 180 )
+ Math.sin( 2 * (( 1 + n) * Math.PI / 180 )));
// 同理定义终点的经x,y坐标
createEmptyMovieClip( " yuan " , n);
// 创建一个空影片yuan
with (yuan) {
lineStyle( 0.5 , 0x000000 , 100 );
// 定义线的大小、颜色、透明度
moveTo(a + 200 , b + 150 );
lineTo(c + 200 , d + 150 );
// 从起点到终点画一条线,并把图形的中心点定为(200,150)
}
if (n <= 360 ) {
n = n + 1 ;
}
};
画螺旋线
代码:
_root.onEnterFrame = function () {
a = ( 10 + 0.1 * n) * Math.cos(n * Math.PI / 180 );
b = ( 10 + 0.1 * n) * Math.sin(n * Math.PI / 180 );
c = ( 10 + 0.1 * n) * Math.cos((n + 1 ) * Math.PI / 180 );
d = ( 10 + 0.1 * n) * Math.sin((n + 1 ) * Math.PI / 180 );
createEmptyMovieClip( " yuan " , n);
with (yuan) {
lineStyle( 2 , 0x000000 , 50 );
moveTo(a + 200 , b + 150 );
lineTo(c + 200 , d + 150 );
}
if (n <= 900 ) {
n = n + 1 ;
}
};
旋转的长方体
代码:
a = 50 * Math.cos(n * Math.PI / 180 );
b = 100 * Math.sin(n * Math.PI / 180 );
c1 = 300 ;
c2 = 200 ;
_root.createEmptyMovieClip( " triangle " , 1 );
with (_root.triangle) {
lineStyle( 1 , 0x000000 , 50 );
moveTo(a + c1, b + c2);
lineTo( 50 * math.cos((n + 90 ) * math.pi / 180 ) +
c1, 100 * math.sin((n + 90 ) * math.pi / 180 ) + c2);
lineTo( 50 * math.cos((n + 180 ) * math.pi / 180 ) +
c1, 100 * math.sin((n + 180 ) * math.pi / 180 ) + c2);
lineTo( 50 * math.cos((n + 270 ) * math.pi / 180 ) +
c1, 100 * math.sin((n + 270 ) * math.pi / 180 ) + c2);
lineTo( 50 * math.cos((n + 360 ) * math.pi / 180 ) +
c1, 100 * math.sin((n + 360 ) * math.pi / 180 ) + 200 );
lineStyle( 1 , 0x000000 , 50 );
moveTo(a + 200 , b + 100 );
lineTo( 50 * math.cos((n + 90 ) * math.pi / 180 ) +
200 , 100 * math.sin((n + 90 ) * math.pi / 180 ) + 100 );
lineTo( 50 * math.cos((n + 180 ) * math.pi / 180 ) +
200 , 100 * math.sin((n + 180 ) * math.pi / 180 ) + 100 );
lineTo( 50 * math.cos((n + 270 ) * math.pi / 180 ) +
200 , 100 * math.sin((n + 270 ) * math.pi / 180 ) + 100 );
lineTo( 50 * math.cos((n + 360 ) * math.pi / 180 ) +
200 , 100 * math.sin((n + 360 ) * math.pi / 180 ) + 100 );
lineStyle( 1 , 0x000000 , 30 );
moveTo(a + 200 , b + 100 );
lineTo(a + c1, b + c2);
moveTo( 50 * math.cos((n + 90 ) * math.pi / 180 )
+ c1, 100 * math.sin((n + 90 ) * math.pi / 180 ) + c2);
lineTo( 50 * math.cos((n + 90 ) * math.pi / 180 )
+ 200 , 100 * math.sin((n + 90 ) * math.pi / 180 ) + 100 );
moveTo( 50 * math.cos((n + 180 ) * math.pi / 180 )
+ c1, 100 * math.sin((n + 180 ) * math.pi / 180 ) + c2);
lineTo( 50 * math.cos((n + 180 ) * math.pi / 180 )
+ 200 , 100 * math.sin((n + 180 ) * math.pi / 180 ) + 100 );
moveTo( 50 * math.cos((n + 270 ) * math.pi / 180 )
+ c1, 100 * math.sin((n + 270 ) * math.pi / 180 ) + c2);
lineTo( 50 * math.cos((n + 270 ) * math.pi / 180 )
+ 200 , 100 * math.sin((n + 270 ) * math.pi / 180 ) + 100 );
}
用as做烛光,相当逼真。
代码:
offsetX = 275 ;
offsetY = 100 ;
left = 0 ;
right = 0 ;
top = 0 ;
leftGoal = 0 ;
rightGoal = 0 ;
topGoal = 0 ;
rate = . 2 ;
decay = . 9 ;
for ( var i = 0 ; i < shapes.length; i ++ ) {
var name = " flame " + i;
createEmptyMovieClip(name, i);
_root[name]._x = offsetX;
_root[name]._y = offsetY;
_root[name].offset = parseInt(shapes[i].split( " | " )[ 0 ]);
_root[name].fade = parseInt(shapes[i].split( " | " )[ 1 ]);
}
createEmptyMovieClip( " heat " , i);
heat._x = offsetX;
heat._y = offsetY;
checkEdge = function (cur, side, dist) {
change = 0 ; if (cur > side) {
change -= Math.random() * dist;
} else if (cur <- side) {
change += Math.random() * dist;
}
return change;
};
onEnterFrame = function () {
leftGoal += Math.random() * 6 - 3 ;
leftGoal += checkEdge(leftGoal, 10 , 3 );
rightGoal += Math.random() * 6 - 3 ;
rightGoal += checkEdge(rightGoal, 10 , 3 );
topGoal += Math.random() * 8 - 4 ;
topGoal += checkEdge(topGoal, 15 , 4 );
leftAccel = (leftGoal - left) * rate;
leftVeloc += leftAccel;
leftVeloc *= decay;
left += leftVeloc;
rightAccel = (rightGoal - right) * rate;
rightVeloc += rightAccel;
rightVeloc *= decay;right += rightVeloc;
topAccel = (topGoal - top) * rate;
topVeloc += topAccel;
topVeloc *= decay;top += topVeloc;
for ( var i = 0 ; i < shapes.length; i ++ ) {
with (_root[ " flame " + i]) {
clear();colors = [ 0xFCE39C , 0xF4AC35 ];
alphas = [_root[ " flame " + i].fade,
_root[ " flame " + i].fade - 20 ];
ratios = [ 70 , 255 ];
matrix = {matrixType: " box " , x: - 50 ,
y: 50 , w: 100 , h: 200 , r: 0 };
beginGradientFill( " radial " ,colors,
alphas, ratios, matrix);
lineStyle( 1 , 0x000000 , 0 );
moveTo( 0 - left + right, 0 - top - _root
[ " flame " + i].offset * 2 );
curveTo( 40 + _root[ " flame " + i].
offset + right, 180 , 0 , 200 );
curveTo( - 40 - _root[ " flame " + i].
offset - left, 180 , 0 - left + right,
0 - top - _root[ " flame " + i].offset * 2 );
endFill();
}
} with (_root.heat) {
clear();colors = [ 0x986932 , 0x986932 ];
alphas = [ 70 , 0 ];
ratios = [ 20 , 255 ];
matrix = {matrixType: " box " ,
x: - 20 - left / 2 , y: 120 - top, w: 40 + right / 2 ,h: 120 + top, r: 0
};
beginGradientFill( " radial " ,
colors, alphas, ratios, matrix);
lineStyle( 1 , 0x000000 , 0 );
moveTo( - 50 , 0 );
lineTo( 50 , 0 );
lineTo( 50 , 200 );
lineTo( - 50 , 200 );
lineTo( - 50 , 0 );
endFill();
}
duplicateMovieClip(
_root[ " flame " + (shapes.length - 1 )],
" shapeMask " ,shapes.length + 1 );
heat.setMask(shapeMask);
};
十四面体代码:
_root.onLoad = function () {
c1 = 200 ;
c2 = 250 ;
c3 = 50 ;
c4 = 10 ;
};
_root.onEnterFrame = function () {
aa = 100 ;
bb = 100 ;
// 控制横向
cc = _root.right_s3.getvalue();
dd = _root.right_s4.getvalue();
ee = _root.right_s5.getvalue();
ff = _root.right_s6.getvalue();
gg = _root.right_s7.getvalue();
daxiao1 = aa;
daxiao2 = bb;
sutu = cc;
zhox = ee;
bianshu1 = dd;
// 控制速度和方向
_root.createEmptyMovieClip( " triangle " , 1 );
lineStyle( 0 , 0x000000 , 100 );
with (_root.triangle) {
// 画虚线
a1 = daxiao2 * math.sin((n + 1 * 60 ) * math.pi / 180 );
b1 = daxiao1 * math.cos((n + 1 * 60 ) * math.pi / 180 );
a2 = daxiao2 * math.sin((n + (i + 1 ) * 60 ) * math.pi / 180 );
b2 = daxiao1 * math.cos((n + (i + 1 ) * 60 ) * math.pi / 180 );
lineStyle( 1 , 0xff0000 , 100 );
// 中面的6个点
moveTo(daxiao2 * math.sin((n + 1 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 1 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
lineTo(daxiao2 * math.sin((n + 6 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 6 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 3 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 3 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
lineTo(daxiao2 * math.sin((n + 2 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 2 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 5 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 5 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
lineTo(daxiao2 * math.sin((n + 4 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 4 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
// 连上下的12个点
moveTo(daxiao2 * math.sin((n + 1 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 1 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 2 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 2 * 60 ) * math.pi / 180 ) + c2 - gg);
moveTo(daxiao2 * math.sin((n + 3 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 3 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 4 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 4 * 60 ) * math.pi / 180 ) + c2 - gg);
moveTo(daxiao2 * math.sin((n + 5 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 5 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 6 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 6 * 60 ) * math.pi / 180 ) + c2 - gg);
// 中面的6个点,但连线不一样,注意
moveTo(daxiao2 * math.sin
((n + 1 * 60 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 1 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin
((n + 1 * 60 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 1 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 2 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 2 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 2 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 2 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 3 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 3 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 3 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 3 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 4 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 4 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 4 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 4 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 5 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 5 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 5 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 5 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 6 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 6 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 6 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 6 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
// 取下面的顶点,及3个点并连线
lineStyle( 1 , 0x336600 , 60 );
moveTo(c1, c2 - gg - c3 - c3 + 150 + c3);
lineTo((daxiao2 - c4) * math.sin
((n + 5 * 30 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 5 * 30 ) * math.pi / 180 ) + c2 -
gg - c3 - c3 + 150 );
moveTo(c1, c2 - gg - c3 - c3 + 150 + c3);
lineTo((daxiao2 - c4) * math.sin
((n + 9 * 30 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 9 * 30 ) * math.pi / 180 ) + c2 - gg - c3 - c3 + 150 );
moveTo(c1, c2 - gg - c3 - c3 + 150 + c3);
lineTo((daxiao2 - c4) * math.sin
((n + 1 * 30 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 1 * 30 ) * math.pi / 180 ) + c2
- gg - c3 - c3 + 150 );
// 下面3、6个点连接
moveTo((daxiao2 - c4) * math.sin
((n + 5 * 30 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 5 * 30 ) * math.pi / 180 ) + c2 - gg - c3 - c3 + 150 );
lineTo(daxiao2 * math.sin((n + 2 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 2 * 60 ) * math.pi / 180 ) + c2 - gg);
moveTo((daxiao2 - c4) * math.sin((n + 5 * 30 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 5 * 30 ) * math.pi / 180 ) + c2 - gg - c3 - c3 + 150 );
lineTo(daxiao2 * math.sin((n + 3 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 3 * 60 ) * math.pi / 180 ) + c2 - gg);
moveTo((daxiao2 - c4) * math.sin((n + 9 * 30 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 9 * 30 ) * math.pi / 180 ) + c2 - gg - c3 - c3 + 150 );
lineTo(daxiao2 * math.sin((n + 4 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 4 * 60 ) * math.pi / 180 ) + c2 - gg);
moveTo((daxiao2 - c4) * math.sin
((n + 9 * 30 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 9 * 30 ) * math.pi / 180 ) + c2 - gg - c3 - c3 + 150 );
lineTo(daxiao2 * math.sin((n + 5 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 5 * 60 ) * math.pi / 180 ) + c2 - gg);
moveTo((daxiao2 - c4)
* math.sin((n + 1 * 30 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 1 * 30 ) * math.pi / 180 ) + c2 - gg - c3 - c3 + 150 );
lineTo(daxiao2 * math.sin((n + 1 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 1 * 60 ) * math.pi / 180 ) + c2 - gg);
moveTo((daxiao2 - c4)
* math.sin((n + 1 * 30 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 1 * 30 ) * math.pi / 180 ) + c2 - gg - c3 - c3 + 150 );
lineTo(daxiao2 * math.sin
((n + 6 * 60 ) * math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 6 * 60 ) * math.pi / 180 ) + c2 - gg);
// 取上面的顶点,并连线
moveTo(c1, c2 - gg - c3 - c3 - c3);
lineTo((daxiao2 - c4) * math.sin
((n + 210 ) * math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 210 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
moveTo(c1, c2 - gg - c3 - c3 - c3);
lineTo((daxiao2 - c4) * math.sin
((n + 330 ) * math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 330 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
moveTo(c1, c2 - gg - c3 - c3 - c3);
lineTo((daxiao2 - c4) * math.sin((n + 1 * 90 )
* math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 1 * 90 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
// 中上面的6个点,但连线不一样,注意
moveTo(daxiao2 * math.sin((n + 1 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 1 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
lineTo(daxiao2 * math.sin((n + 6 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 6 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 3 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 3 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
lineTo(daxiao2 * math.sin((n + 2 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 2 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 5 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 5 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
lineTo(daxiao2 * math.sin((n + 4 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 4 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
// 上面3、6个点连接
moveTo((daxiao2 - c4) * math.sin
((n + 90 ) * math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 90 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
lineTo(daxiao2 * math.sin((n + 1 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 1 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo((daxiao2 - c4) * math.sin((n + 90 )
* math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 90 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
lineTo(daxiao2 * math.sin((n + 2 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 2 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo((daxiao2 - c4) * math.sin
((n + 210 ) * math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 210 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
lineTo(daxiao2 * math.sin((n + 3 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 3 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo((daxiao2 - c4) * math.sin
((n + 210 ) * math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 210 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
lineTo(daxiao2 * math.sin((n + 4 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 4 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo((daxiao2 - c4) * math.sin
((n + 330 ) * math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 330 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
lineTo(daxiao2 * math.sin
((n + 5 * 60 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 5 * 60 ) * math.pi / 180 )
+ c2 - gg - c3);
moveTo((daxiao2 - c4)
* math.sin((n + 330 ) * math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 330 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
lineTo(daxiao2 * math.sin
((n + 6 * 60 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 6 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
}
n = n + sutu;
}
使用方法:把代码拷到帧中就可看到效果
用鼠标任意画线
效果:可按住鼠标任意画线,可作简单的涂鸭工具
代码:
createEmptyMovieClip( " xian " , 1 );
with (xian) {
_root.onMouseMove = function () {
if (draw) {
_root.lineStyle( 0 , 0x000000 , 100 );
_root.lineTo(_root._xmouse,_root._ymouse);
}
};
_root.onMouseDown = function () {
draw = true ;
_root.moveTo(_root._xmouse,_root._ymouse);
};
_root.onMouseUp = function () {
draw = false ;
};
}
用鼠标任意画直线
效果:类似flash中的直线工具
代码:
createEmptyMovieClip( " line " , n);
with (line) {
lineStyle( 1 , 0x000000 , 100 );
moveTo( 0 , 0 );
lineTo( 100 , 100 );
line._visible = 0 ;
}
_root.onMouseDown = function () {
qidian_x = _root._xmouse;
qidian_y = _root._ymouse;
with (line) {
_x = qidian_x;
_y = qidian_y;
_xscale = 0 ;
_yscale = 0 ;
_visible = 1 ;
}
};
_root.onMouseMove = function () {
endX = _root._xmouse;
endY = _root._ymouse;
if (_root.line != " _root.line " && key.isdown( 16 )){
if (Math.abs(endX - qidian_x) > Math.abs(endY - qidian_y)){
setProperty(_root.line,_xscale, endX - qidian_x);
setProperty(_root.line,_yscale, endX - qidian_x);
} else {
setProperty(_root.line,_xscale, endY - qidian_y);
setProperty(_root.line,_yscale, endY - qidian_y);
}
} else {
setProperty(_root.line, _xscale,endX - qidian_x);
setProperty(_root.line, _yscale,endY - qidian_y);
}
};
_root.onMouseUp = function () {
if (_root._xmouse - qidian_x != 0 ) {
i ++ ;
Objectx = " Copy " add i;
duplicateMovieClip(_root.line,Objectx, i);
setProperty(Objectx, _x, qidian_x);
setProperty(Objectx, _y, qidian_y);
_root.i = i;
}
setProperty(_root.line, _visible, 0 );
};
用鼠标任意画矩形
效果:类似flash中的矩形工具
代码:
createEmptyMovieClip( " line " , n);
with (line) {
lineStyle( 0.1 , 0x000000 , 100 );
moveTo( 0 , 0 );
lineTo( 100 , 0 );
lineTo( 100 , 100 );
lineTo( 0 , 100 );
lineTo( 0 , 0 );
line._visible = 0 ;
}
_root.onMouseDown = function () {
qidian_x = _root._xmouse;
qidian_y = _root._ymouse;
with (line) {
_x = qidian_x;
_y = qidian_y;
_xscale = 0 ;
_yscale = 0 ;
_visible = 1 ;
}
};
_root.onMouseMove = function () {
endX = _root._xmouse;
endY = _root._ymouse;
if (_root.line != " _root.line " && key.isdown( 16 )){
if (Math.abs(endX - qidian_x) > Math.abs(endY - qidian_y)){
setProperty(_root.line,_xscale, endX - qidian_x);
setProperty(_root.line,_yscale, endX - qidian_x);
} else {
setProperty(_root.line,_xscale, endY - qidian_y);
setProperty(_root.line,_yscale, endY - qidian_y);
}
} else {
setProperty(_root.line, _xscale,endX - qidian_x);
setProperty(_root.line, _yscale,endY - qidian_y);
}
};
_root.onMouseUp = function () {
if (_root._xmouse - qidian_x != 0 ) {
i ++ ;
Objectx = " Copy " add i;
duplicateMovieClip(_root.line,Objectx, i);
setProperty(Objectx, _x, qidian_x);
setProperty(Objectx, _y, qidian_y);
_root.i = i;
}
setProperty(_root.line, _visible, 0 );
};
用鼠标任意画圆、椭圆
效果:类似flash中的工具
代码:
createEmptyMovieClip( " line " , n);
with (line) {
for (n = 1 ; n < 400 ; n ++ ) {
a = 50 * Math.cos(n * Math.PI / 180 );
b = 50 * Math.sin(n * Math.PI / 180 );
c = 50 * Math.cos((n + 1 ) * Math.PI / 180 );
d = 50 * Math.sin((n + 1 ) * Math.PI / 180 );
lineStyle( 0.01 , 0x000000 , 50 );
moveTo(a + 50 , b + 50 );
lineTo(c + 50 , d + 50 );
}
line._visible = 0 ;
}
_root.onMouseDown = function () {
qidian_x = _root._xmouse;
qidian_y = _root._ymouse;
with (line) {
_x = qidian_x;
_y = qidian_y;
_xscale = 0 ;
_yscale = 0 ;
_visible = 1 ;
}
};
_root.onMouseMove = function () {
endX = _root._xmouse;
endY = _root._ymouse;
if (_root.line != " _root.line " && key.isdown( 16 )){
if (Math.abs(endX - qidian_x) > Math.abs(endY - qidian_y)){
setProperty(_root.line,_xscale, endX - qidian_x);
setProperty(_root.line,_yscale, endX - qidian_x);
} else {
setProperty(_root.line,_xscale, endY - qidian_y);
setProperty(_root.line,_yscale, endY - qidian_y);
}
} else {
setProperty(_root.line, _xscale,endX - qidian_x);
setProperty(_root.line, _yscale,endY - qidian_y);
}
};
_root.onMouseUp = function () {
if (_root._xmouse - qidian_x != 0 ) {
i ++ ;
Objectx = " Copy " add i;
duplicateMovieClip(_root.line,Objectx, i);
setProperty(Objectx, _x, qidian_x);
setProperty(Objectx, _y, qidian_y);
_root.i = i;
}
setProperty(_root.line, _visible, 0 );
};
两定点画虚线
代码:
MovieClip.
prototype.dashTo = function (startPoint,
destPoint, dashLength, spaceLength) {
var x = destPoint.x - startPoint.x;
var y = destPoint.y - startPoint.y;
var hyp = Math.sqrt((x) * (x) + (y) * (y));
var units = hyp / (dashLength + spaceLength);
var dashSpaceRatio = dashLength /
(dashLength + spaceLength);
var dashX = (x / units) * dashSpaceRatio;
var spaceX = (x / units) - dashX;
var dashY = (y / units) * dashSpaceRatio;
var spaceY = (y / units) - dashY;
this .moveTo(startPoint.x, startPoint.y);
while (hyp > 0 ) {
startPoint.x += dashX;
startPoint.y += dashY;
hyp -= dashLength;
if (hyp < 0 ) {
startPoint.x = destPoint.x;
startPoint.y = destPoint.y;
}
this .lineTo(startPoint.x,startPoint.y);
startPoint.x += spaceX;
startPoint.y += spaceY;
this .moveTo(startPoint.x,startPoint.y);
hyp -= spaceLength;
}
this .moveTo(destPoint.x, destPoint.y);
};
createEmptyMovieClip( " DrawingSpace " , 1 );
with (DrawingSpace) {
lineStyle( 0 , 0x000000 , 100 );
dashTo({x: 300 , y: 0 }, {x: 0 , y: 400 }, 3 , 10 );
}
从一点到另一点画虚线
代码:
function DrawDottedLine(targetMC,
linewidth, fromX, fromY, toX, toY) {
// targetMC: 目标MovieClip德InstanceName;
// linewidth: 线宽;
// fromX, fromY: 从(fromX, fromY)处开始画;
// toX, toY: 画到(toX, toY)处;
var x, y;
eval(targetMC).lineStyle(lineWidth, 0x000000 , 100 );
// 线的颜色是黑色(0x000000)
eval(targetMC).moveTo(fromX, fromY);
x = fromX;
y = fromY;
while (x < toX) {
x = x + 4 / (Math.sqrt((toY - fromY) *
(toY - fromY) + (toX - fromX) * (toX - fromX))) * (toX - fromX);
y = y + 4 / (Math.sqrt((toY - fromY) *
(toY - fromY) + (toX - fromX) * (toX - fromX))) * (toY - fromY);
eval(targetMC).lineTo(x, y);
x = x + 4 / (Math.sqrt((toY - fromY) *
(toY - fromY) + (toX - fromX) * (toX - fromX))) * (toX - fromX);
y = y + 4 / (Math.sqrt((toY - fromY) *
(toY - fromY) + (toX - fromX) * (toX - fromX))) * (toY - fromY);
eval(targetMC).moveTo(x, y);
}
}
createEmptyMovieClip( " obj " , 1 ); // 建一空影片
DrawDottedLine( " _root.obj " , 1 , 10 , 10 , 200 , 300 );
// 调用函数
从场景的左上角到鼠标画虚线
代码:
x = 0 ;
y = 0 ; // 场景左上角的坐标
l = 0 ;
mx = _root._xmouse;
my = _root._ymouse; // 鼠标的坐标
ml = Math.sqrt(mx * mx + my * my); // 三角形的斜边长
_root.moveto( 0 , 0 ); // 画线的起点为场景左上角的坐标
_root.linestyle( 0.1 , 0x000000 , 100 );
// 下面用三角函数求出每一段虚线的端点坐标,
然后用循环重复画一条短线和空格。直到线的终点位置。
while (l < ml) {
l += 5 ;
// 短线的长
x = l * mx / ml;
y = l * my / ml;
_root.lineto(x, y);
// 将绘图点移动到相当于短线长的,且与短线在同一直线的位置。即一个空格
l += 5 ;
x = l * mx / ml;
y = l * my / ml;
_root.moveto(x, y);
}
不错的画线函数,自定义点、线的样式、填充
function Shape() {
this .points = [];
this .lines = false ;
tthis.filled = false ;
tthis.lineStyle = null ;
this .t = eval(_target);
}
Shape.prototype.addPoint = function (x, y) {
this .points[ this .points.length] = {x:x, y:y};
};
Shape.prototype.removePoint = function () {
this .points.pop();
};
Shape.prototype.draw = function (w, c, a) {
if ( this .points.length > 1 ) {
this .lineStyle = {w:w, c:c,a:a};
this .t.lineStyle(w, c, a); var i = 0 ;
var l = this .points.length;
while (i < l) {
this .t.lineTo( this .points[i].
x, this .points[i].y);
++ i;
}
this .lines = true ;
}
};
Shape.prototype.fill = function (c, a) {
if ( this .points.length > 1 ) {
if ( this .lines) {
this .clear();
this .t.lineStyle( this .lineStyle.w,
this .lineStyle.c, this .lineStyle.a);
} else {
this .t.lineStyle( 0 , 0xFFFFFF , 0 );
if ( this .filled){
this .clear();
}
}
this .t.beginFill(c, a);
var i = 0 ;
var l = this .points.length;
while (i < l) {
this .t.lineTo( this .points[i].x, this .points[i].y);
++ i;
}
this .t.endFill();
this .filled = true ;
}
};
Shape.prototype.getX = function () {
if ( this .points.length) {
return this .points[ this .points.length - 1 ].x;
}
};
Shape.prototype.getY = function () {
if ( this .points.length) {
return this .points[ this .points.length - 1 ].y;
}
};
g = new Shape();
g.addPoint( 0 , 100 );
g.addPoint( 100 , 100 );
g.addPoint( 100 , 0 );
g.addPoint( 0 , 0 );
g.fill( 0x339900 , 100 );
g.draw( 5 , 0x000000 , 100 );
系列讲座二,用AS脚本画羽毛、画正余弦、画心脏线、画螺旋线、画旋转的长方体、画烛光、画十四面体……
action画羽毛 作者:东方暖阳
代码:
onMouseDown = init;
function init() { // 创建羽毛,并设置羽毛各个参数及对函数的调用
feather = createEmptyMovieClip( " f " + i, 10000 + i ++ );
feather.swapDepths(Math.random() * 10000 );
feather._x = _xmouse;
feather._y = _ymouse;
feather._rotation = - 90 + Math.random() * 40 - 20 ;
col = Math.random() * 255 << 8 ;
radius = Math.random() * 20 + 20 ;
twist = Math.random() + . 5 ;
len = Math.random() * 100 + 50 ;
taper = Math.random() * . 05 + . 95 ;
x = 0 ;
onEnterFrame = grow;
}
function grow() { // 创建函数来定义羽毛的生长、
定义羽毛的停止生长条件
angle = Math.sin(fa += twist) * Math.PI / 4 ;
feather.moveTo(x, y);
feather.lineStyle( 1 , col, 50 );
feather.lineTo(x + Math.cos(angle) * radius,
y + Math.sin(angle) * radius);
radius *= taper;
if (x ++> len) {
delete onEnterFrame;
}
};
用as画圆:
代码:
思路:用不间断的呗线形成一个圆,实际上一个正360度多边形
应用:按此法可画任意的图形,如抛物线,螺旋线等,只需把方程修改即可,第2 个代码就是一个应用,画椭圆。
_root.onLoad = function () {
System.Usecodepage = true ;
// 这句我也不知道什么意思,加了以后就支持中文了,是从
“好笨”那里学来的,侦知道告诉我,谢谢
_root.createTextField( " txtLoad " , 151 , 50 , 280 , 400 , 30 );
// 建 一文本,名、层次、x、y、宽度、高度
_root.txtLoad.text = " 这是一个画线的应用。
zjs35制作。zjs35@163.com " ;
// 文本中的内容
daxiao = 100 ; // 圆的半径
yuanxin_x = 200 ;
yuanxin_y = 150 ; // 圆心的坐标
};
_root.onEnterFrame = function () {
a = daxiao * Math.cos(n * Math.PI / 180 );
b = daxiao * Math.sin(n * Math.PI / 180 ); // 根据圆的方程定义一个起点
c = daxiao * Math.cos((n + 1 ) * Math.PI / 180 );
d = daxiao * Math.sin((n + 1 ) * Math.PI / 180 ); // 定义一个终点
createEmptyMovieClip( " yuan " , n);
with (yuan) {
lineStyle( 2 , 0x000000 , 50 ); // 定义线的样式
moveTo(a + yuanxin_x, b + yuanxin_y);
lineTo(c + yuanxin_x, d + yuanxin_y); // 从起点到终点画线
}
if (n <= 360 ) {
n = n + 1 ;
} // 控制画线的长度,刚好一个圆,1表示画线的速度
};
画正多边形
代码:
这是一个画正多边形的程序,思路:把一个圆划分成n等分,把这些点呗接起来 ,下面是按钮上代码,另外在场景中建两可输入文本框,名为aa,bb。
on (release) {
daxiao = aa;
// 获取多边形的大小,以像素为单位
bianshu = bb;
// 获取边数,整数,从3开始,到无穷大,n多边形就是圆
jiaodu = 360 / bianshu;
// 得到每个等分的角度
for (n = 1 ; n <= bianshu; n ++ ) {
// for循环,由bianshu来控制循环的次数,也就是要画的多边形的边数
a = daxiao * math.cos(n * jiaodu * math.pi / 180 );
b = daxiao * math.sin(n * jiaodu * math.pi / 180 );
// 定义起点的坐标
c = daxiao * math.cos((n + 1 ) * jiaodu * math.pi / 180 );
d = daxiao * math.sin((n + 1 ) * jiaodu * math.pi / 180 );
// 定义终点的坐标
createEmptyMovieClip( " xian " , n);
// 创建一个空影片xian,n为层次
with (xian) {
lineStyle( 2 , 0xff0000 , 100 );
// 定义线的大小、颜色、透明度
moveTo(a + 300 , b + 200 );
lineTo(c + 300 , d + 200 ); // 从起点到终点画线
}
}
}
用as画字母F 作者:寒蓝
代码:
// 创建一个空的mc:
_root.createEmptyMovieClip( " myMc " , 0 );
// 定义mc的位置:
myMc._x = 100 ;
myMc._y = 50 ;
// 定义填充:
myMc.beginFill( 0xff0000 , 100 );
colors = [ 0xFF0000 , 0xffffff ];
alphas = [ 100 , 100 ];
ratios = [ 0 , 0xFF ];
matrix = {a: 50 , b: 0 , c: 0 , d: 0 ,
e: 50 , f: 0 , g: 50 , h: 50 , i: 1 };
myMc.beginGradientFill( " linear " ,
colors, alphas, ratios, matrix);
// 定义画线的样式:
myMc.lineStyle( 1 , 0xff0000 , 100 );
// 移动初始点:
myMc.moveTo( 100 , 0 );
// 连接曲线:
myMc.curveTo( 65 , 5 , 50 , 50 );
myMc.curveTo( 35 , 95 , 0 , 100 );
// 连接直线
myMc.lineTo( 0 , 120 );
myMc.curveTo( 45 , 110 , 62 , 70 );
myMc.lineTo( 90 , 70 );
myMc.lineTo( 90 , 50 );
myMc.lineTo( 70 , 50 );
myMc.curveTo( 80 , 20 , 100 , 20 );
myMc.lineTo( 100 , 0 );
// 结束填充:
myMc.endFill();
// 清除所画:
// myMc.clear();
画正弦线
代码:
root.onLoad
= function () {
daxiao = 100 ;
yuanxin_x = 00 ;
yuanxin_y = 150 ;
};
_root.onEnterFrame = function () {
a = daxiao * Math.sin(n * Math.PI / 180 );
c = daxiao * Math.sin((n + 1 ) * Math.PI / 180 );
createEmptyMovieClip( " xian " , n);
with (xian) {
lineStyle( 1 , 0x339900 , 50 );
moveTo(n + yuanxin_x, a + yuanxin_y);
lineTo(n + 1 + yuanxin_x, c + yuanxin_y);
}
if (n <= 400 ) {
n = n + 1 / 2 ;
}
}
画余弦线
代码:
_root.onLoad = function () {
daxiao = 100 ;
yuanxin_x = 00 ;
yuanxin_y = 150 ;
};
_root.onEnterFrame = function () {
a = daxiao * Math.cos(n * Math.PI / 180 );
c = daxiao * Math.cos((n + 1 ) * Math.PI / 180 );
createEmptyMovieClip( " yuan " , n);
with (yuan) {
lineStyle( 1 , 0x000000 , 50 );
moveTo(n + yuanxin_x, a + yuanxin_y);
lineTo(n + 1 + yuanxin_x, c + yuanxin_y);
}
if (n <= 400 ) {
n = n + 1 / 2 ;
}
};
画心脏线
代码:
这是一个用MX新增功能画线的例子,比在5中用点复制法画线简单多了,用此方法,可动态画数学中所有的图形。
_root.onLoad = function () {
daxiao = 40 ;
// 设定心脏线的大小
};
_root.onEnterFrame = function () {
a = daxiao * ( 2 * Math.cos(n * Math.PI / 180 )
+ Math.cos( 2 * (n * Math.PI / 180 )));
// 通过心脏线的方程定义起点的x坐标
b = daxiao * ( 2 * Math.sin(n * Math.PI / 180 )
+ Math.sin( 2 * (n * Math.PI / 180 )));
// 通过心脏线的方程定义起点的y坐标
c = daxiao * ( 2 * Math.cos((n + 1 ) * Math.PI / 180 )
+ Math.cos( 2 * (( 1 + n) * Math.PI / 180 )));
d = daxiao * ( 2 * Math.sin((n + 1 ) * Math.PI / 180 )
+ Math.sin( 2 * (( 1 + n) * Math.PI / 180 )));
// 同理定义终点的经x,y坐标
createEmptyMovieClip( " yuan " , n);
// 创建一个空影片yuan
with (yuan) {
lineStyle( 0.5 , 0x000000 , 100 );
// 定义线的大小、颜色、透明度
moveTo(a + 200 , b + 150 );
lineTo(c + 200 , d + 150 );
// 从起点到终点画一条线,并把图形的中心点定为(200,150)
}
if (n <= 360 ) {
n = n + 1 ;
}
};
画螺旋线
代码:
_root.onEnterFrame = function () {
a = ( 10 + 0.1 * n) * Math.cos(n * Math.PI / 180 );
b = ( 10 + 0.1 * n) * Math.sin(n * Math.PI / 180 );
c = ( 10 + 0.1 * n) * Math.cos((n + 1 ) * Math.PI / 180 );
d = ( 10 + 0.1 * n) * Math.sin((n + 1 ) * Math.PI / 180 );
createEmptyMovieClip( " yuan " , n);
with (yuan) {
lineStyle( 2 , 0x000000 , 50 );
moveTo(a + 200 , b + 150 );
lineTo(c + 200 , d + 150 );
}
if (n <= 900 ) {
n = n + 1 ;
}
};
旋转的长方体
代码:
a = 50 * Math.cos(n * Math.PI / 180 );
b = 100 * Math.sin(n * Math.PI / 180 );
c1 = 300 ;
c2 = 200 ;
_root.createEmptyMovieClip( " triangle " , 1 );
with (_root.triangle) {
lineStyle( 1 , 0x000000 , 50 );
moveTo(a + c1, b + c2);
lineTo( 50 * math.cos((n + 90 ) * math.pi / 180 ) +
c1, 100 * math.sin((n + 90 ) * math.pi / 180 ) + c2);
lineTo( 50 * math.cos((n + 180 ) * math.pi / 180 ) +
c1, 100 * math.sin((n + 180 ) * math.pi / 180 ) + c2);
lineTo( 50 * math.cos((n + 270 ) * math.pi / 180 ) +
c1, 100 * math.sin((n + 270 ) * math.pi / 180 ) + c2);
lineTo( 50 * math.cos((n + 360 ) * math.pi / 180 ) +
c1, 100 * math.sin((n + 360 ) * math.pi / 180 ) + 200 );
lineStyle( 1 , 0x000000 , 50 );
moveTo(a + 200 , b + 100 );
lineTo( 50 * math.cos((n + 90 ) * math.pi / 180 ) +
200 , 100 * math.sin((n + 90 ) * math.pi / 180 ) + 100 );
lineTo( 50 * math.cos((n + 180 ) * math.pi / 180 ) +
200 , 100 * math.sin((n + 180 ) * math.pi / 180 ) + 100 );
lineTo( 50 * math.cos((n + 270 ) * math.pi / 180 ) +
200 , 100 * math.sin((n + 270 ) * math.pi / 180 ) + 100 );
lineTo( 50 * math.cos((n + 360 ) * math.pi / 180 ) +
200 , 100 * math.sin((n + 360 ) * math.pi / 180 ) + 100 );
lineStyle( 1 , 0x000000 , 30 );
moveTo(a + 200 , b + 100 );
lineTo(a + c1, b + c2);
moveTo( 50 * math.cos((n + 90 ) * math.pi / 180 )
+ c1, 100 * math.sin((n + 90 ) * math.pi / 180 ) + c2);
lineTo( 50 * math.cos((n + 90 ) * math.pi / 180 )
+ 200 , 100 * math.sin((n + 90 ) * math.pi / 180 ) + 100 );
moveTo( 50 * math.cos((n + 180 ) * math.pi / 180 )
+ c1, 100 * math.sin((n + 180 ) * math.pi / 180 ) + c2);
lineTo( 50 * math.cos((n + 180 ) * math.pi / 180 )
+ 200 , 100 * math.sin((n + 180 ) * math.pi / 180 ) + 100 );
moveTo( 50 * math.cos((n + 270 ) * math.pi / 180 )
+ c1, 100 * math.sin((n + 270 ) * math.pi / 180 ) + c2);
lineTo( 50 * math.cos((n + 270 ) * math.pi / 180 )
+ 200 , 100 * math.sin((n + 270 ) * math.pi / 180 ) + 100 );
}
用as做烛光,相当逼真。
代码:
offsetX = 275 ;
offsetY = 100 ;
left = 0 ;
right = 0 ;
top = 0 ;
leftGoal = 0 ;
rightGoal = 0 ;
topGoal = 0 ;
rate = . 2 ;
decay = . 9 ;
for ( var i = 0 ; i < shapes.length; i ++ ) {
var name = " flame " + i;
createEmptyMovieClip(name, i);
_root[name]._x = offsetX;
_root[name]._y = offsetY;
_root[name].offset = parseInt(shapes[i].split( " | " )[ 0 ]);
_root[name].fade = parseInt(shapes[i].split( " | " )[ 1 ]);
}
createEmptyMovieClip( " heat " , i);
heat._x = offsetX;
heat._y = offsetY;
checkEdge = function (cur, side, dist) {
change = 0 ; if (cur > side) {
change -= Math.random() * dist;
} else if (cur <- side) {
change += Math.random() * dist;
}
return change;
};
onEnterFrame = function () {
leftGoal += Math.random() * 6 - 3 ;
leftGoal += checkEdge(leftGoal, 10 , 3 );
rightGoal += Math.random() * 6 - 3 ;
rightGoal += checkEdge(rightGoal, 10 , 3 );
topGoal += Math.random() * 8 - 4 ;
topGoal += checkEdge(topGoal, 15 , 4 );
leftAccel = (leftGoal - left) * rate;
leftVeloc += leftAccel;
leftVeloc *= decay;
left += leftVeloc;
rightAccel = (rightGoal - right) * rate;
rightVeloc += rightAccel;
rightVeloc *= decay;right += rightVeloc;
topAccel = (topGoal - top) * rate;
topVeloc += topAccel;
topVeloc *= decay;top += topVeloc;
for ( var i = 0 ; i < shapes.length; i ++ ) {
with (_root[ " flame " + i]) {
clear();colors = [ 0xFCE39C , 0xF4AC35 ];
alphas = [_root[ " flame " + i].fade,
_root[ " flame " + i].fade - 20 ];
ratios = [ 70 , 255 ];
matrix = {matrixType: " box " , x: - 50 ,
y: 50 , w: 100 , h: 200 , r: 0 };
beginGradientFill( " radial " ,colors,
alphas, ratios, matrix);
lineStyle( 1 , 0x000000 , 0 );
moveTo( 0 - left + right, 0 - top - _root
[ " flame " + i].offset * 2 );
curveTo( 40 + _root[ " flame " + i].
offset + right, 180 , 0 , 200 );
curveTo( - 40 - _root[ " flame " + i].
offset - left, 180 , 0 - left + right,
0 - top - _root[ " flame " + i].offset * 2 );
endFill();
}
} with (_root.heat) {
clear();colors = [ 0x986932 , 0x986932 ];
alphas = [ 70 , 0 ];
ratios = [ 20 , 255 ];
matrix = {matrixType: " box " ,
x: - 20 - left / 2 , y: 120 - top, w: 40 + right / 2 ,h: 120 + top, r: 0
};
beginGradientFill( " radial " ,
colors, alphas, ratios, matrix);
lineStyle( 1 , 0x000000 , 0 );
moveTo( - 50 , 0 );
lineTo( 50 , 0 );
lineTo( 50 , 200 );
lineTo( - 50 , 200 );
lineTo( - 50 , 0 );
endFill();
}
duplicateMovieClip(
_root[ " flame " + (shapes.length - 1 )],
" shapeMask " ,shapes.length + 1 );
heat.setMask(shapeMask);
};
十四面体代码:
_root.onLoad = function () {
c1 = 200 ;
c2 = 250 ;
c3 = 50 ;
c4 = 10 ;
};
_root.onEnterFrame = function () {
aa = 100 ;
bb = 100 ;
// 控制横向
cc = _root.right_s3.getvalue();
dd = _root.right_s4.getvalue();
ee = _root.right_s5.getvalue();
ff = _root.right_s6.getvalue();
gg = _root.right_s7.getvalue();
daxiao1 = aa;
daxiao2 = bb;
sutu = cc;
zhox = ee;
bianshu1 = dd;
// 控制速度和方向
_root.createEmptyMovieClip( " triangle " , 1 );
lineStyle( 0 , 0x000000 , 100 );
with (_root.triangle) {
// 画虚线
a1 = daxiao2 * math.sin((n + 1 * 60 ) * math.pi / 180 );
b1 = daxiao1 * math.cos((n + 1 * 60 ) * math.pi / 180 );
a2 = daxiao2 * math.sin((n + (i + 1 ) * 60 ) * math.pi / 180 );
b2 = daxiao1 * math.cos((n + (i + 1 ) * 60 ) * math.pi / 180 );
lineStyle( 1 , 0xff0000 , 100 );
// 中面的6个点
moveTo(daxiao2 * math.sin((n + 1 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 1 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
lineTo(daxiao2 * math.sin((n + 6 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 6 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 3 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 3 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
lineTo(daxiao2 * math.sin((n + 2 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 2 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 5 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 5 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
lineTo(daxiao2 * math.sin((n + 4 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 4 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
// 连上下的12个点
moveTo(daxiao2 * math.sin((n + 1 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 1 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 2 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 2 * 60 ) * math.pi / 180 ) + c2 - gg);
moveTo(daxiao2 * math.sin((n + 3 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 3 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 4 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 4 * 60 ) * math.pi / 180 ) + c2 - gg);
moveTo(daxiao2 * math.sin((n + 5 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 5 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 6 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 6 * 60 ) * math.pi / 180 ) + c2 - gg);
// 中面的6个点,但连线不一样,注意
moveTo(daxiao2 * math.sin
((n + 1 * 60 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 1 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin
((n + 1 * 60 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 1 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 2 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 2 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 2 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 2 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 3 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 3 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 3 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 3 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 4 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 4 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 4 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 4 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 5 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 5 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 5 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 5 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 6 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 6 * 60 ) * math.pi / 180 ) + c2 - gg);
lineTo(daxiao2 * math.sin((n + 6 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 6 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
// 取下面的顶点,及3个点并连线
lineStyle( 1 , 0x336600 , 60 );
moveTo(c1, c2 - gg - c3 - c3 + 150 + c3);
lineTo((daxiao2 - c4) * math.sin
((n + 5 * 30 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 5 * 30 ) * math.pi / 180 ) + c2 -
gg - c3 - c3 + 150 );
moveTo(c1, c2 - gg - c3 - c3 + 150 + c3);
lineTo((daxiao2 - c4) * math.sin
((n + 9 * 30 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 9 * 30 ) * math.pi / 180 ) + c2 - gg - c3 - c3 + 150 );
moveTo(c1, c2 - gg - c3 - c3 + 150 + c3);
lineTo((daxiao2 - c4) * math.sin
((n + 1 * 30 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 1 * 30 ) * math.pi / 180 ) + c2
- gg - c3 - c3 + 150 );
// 下面3、6个点连接
moveTo((daxiao2 - c4) * math.sin
((n + 5 * 30 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 5 * 30 ) * math.pi / 180 ) + c2 - gg - c3 - c3 + 150 );
lineTo(daxiao2 * math.sin((n + 2 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 2 * 60 ) * math.pi / 180 ) + c2 - gg);
moveTo((daxiao2 - c4) * math.sin((n + 5 * 30 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 5 * 30 ) * math.pi / 180 ) + c2 - gg - c3 - c3 + 150 );
lineTo(daxiao2 * math.sin((n + 3 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 3 * 60 ) * math.pi / 180 ) + c2 - gg);
moveTo((daxiao2 - c4) * math.sin((n + 9 * 30 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 9 * 30 ) * math.pi / 180 ) + c2 - gg - c3 - c3 + 150 );
lineTo(daxiao2 * math.sin((n + 4 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 4 * 60 ) * math.pi / 180 ) + c2 - gg);
moveTo((daxiao2 - c4) * math.sin
((n + 9 * 30 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 9 * 30 ) * math.pi / 180 ) + c2 - gg - c3 - c3 + 150 );
lineTo(daxiao2 * math.sin((n + 5 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 5 * 60 ) * math.pi / 180 ) + c2 - gg);
moveTo((daxiao2 - c4)
* math.sin((n + 1 * 30 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 1 * 30 ) * math.pi / 180 ) + c2 - gg - c3 - c3 + 150 );
lineTo(daxiao2 * math.sin((n + 1 * 60 )
* math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 1 * 60 ) * math.pi / 180 ) + c2 - gg);
moveTo((daxiao2 - c4)
* math.sin((n + 1 * 30 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 1 * 30 ) * math.pi / 180 ) + c2 - gg - c3 - c3 + 150 );
lineTo(daxiao2 * math.sin
((n + 6 * 60 ) * math.pi / 180 ) + c1,daxiao1 * math.cos
((n + 6 * 60 ) * math.pi / 180 ) + c2 - gg);
// 取上面的顶点,并连线
moveTo(c1, c2 - gg - c3 - c3 - c3);
lineTo((daxiao2 - c4) * math.sin
((n + 210 ) * math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 210 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
moveTo(c1, c2 - gg - c3 - c3 - c3);
lineTo((daxiao2 - c4) * math.sin
((n + 330 ) * math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 330 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
moveTo(c1, c2 - gg - c3 - c3 - c3);
lineTo((daxiao2 - c4) * math.sin((n + 1 * 90 )
* math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 1 * 90 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
// 中上面的6个点,但连线不一样,注意
moveTo(daxiao2 * math.sin((n + 1 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 1 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
lineTo(daxiao2 * math.sin((n + 6 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 6 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 3 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 3 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
lineTo(daxiao2 * math.sin((n + 2 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 2 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo(daxiao2 * math.sin((n + 5 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 5 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
lineTo(daxiao2 * math.sin((n + 4 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 4 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
// 上面3、6个点连接
moveTo((daxiao2 - c4) * math.sin
((n + 90 ) * math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 90 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
lineTo(daxiao2 * math.sin((n + 1 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 1 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo((daxiao2 - c4) * math.sin((n + 90 )
* math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 90 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
lineTo(daxiao2 * math.sin((n + 2 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 2 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo((daxiao2 - c4) * math.sin
((n + 210 ) * math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 210 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
lineTo(daxiao2 * math.sin((n + 3 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 3 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo((daxiao2 - c4) * math.sin
((n + 210 ) * math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 210 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
lineTo(daxiao2 * math.sin((n + 4 * 60 )
* math.pi / 180 ) + c1,daxiao1
* math.cos((n + 4 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
moveTo((daxiao2 - c4) * math.sin
((n + 330 ) * math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 330 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
lineTo(daxiao2 * math.sin
((n + 5 * 60 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 5 * 60 ) * math.pi / 180 )
+ c2 - gg - c3);
moveTo((daxiao2 - c4)
* math.sin((n + 330 ) * math.pi / 180 ) + c1,(daxiao1)
* math.cos((n + 330 ) * math.pi / 180 ) + c2 - gg - c3 - c3);
lineTo(daxiao2 * math.sin
((n + 6 * 60 ) * math.pi / 180 ) + c1,daxiao1
* math.cos((n + 6 * 60 ) * math.pi / 180 ) + c2 - gg - c3);
}
n = n + sutu;
}