快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

用Flash AS实现画图的具体讲解

  用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); 
    lin

eTo(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; }



返回类别: Flash教程
上一教程: FlashMX 视频教程(22)-实例1绘制月亮
下一教程: Flash课件中测试题信手拈来

您可以阅读与"用Flash AS实现画图的具体讲解"相关的教程:
· Flash中利用遮照实现图片过渡
· flash实现的简朴虚拟现实:商品展示效果
· flash场景之间相互跳转的实现方式
· 用FLASH AS实现鼠标画圆的效果
· Flash中百叶窗效果的实现
    微笑服务 优质保证 索取样品