使用方法:把代码拷到帧中就可看到效果

用鼠标任意画线

效果:可按住鼠标任意画线,可作简单的涂鸭工具

代码:

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);
posted on 2006-07-20 17:59  榻榻米  阅读(813)  评论(0编辑  收藏  举报