AS画图篇(1)

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

用鼠标任意画线

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

代码:

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)