2006年10月8日星期日

flash与0.017453

 什么是0.017453呢?

 
如果在flash中画圆圈,很可能要用到0.017453这个参数.如画圆环.
 
在flash中,rotation旋转的值我们知道是"度".而如何把"度"转换为"弧度"?数学中2πr是表示圆的周长,2π表示整圆的弧度也就是360度,那么1弧度就是2π/360=0.017453.
 
以下是一画圆环的例子:
 
function drawRing(target_mc, instance, r1, r2, rgb, doHide) {
  var TO_RADIANS = 0.017453;
  target_mc[instance] == undefined ? (target_mc.createEmptyMovieClip(instance, target_mc.getNextHighestDepth())) : (target_mc[instance].clear());
  with (target_mc[instance]) {
    beginFill(rgb, 100);
    moveTo(0, 0);
    lineTo(r1, 0);
    var a = 0.268000;
    var i = 0;
    while (i<12) {
      var endx = r1*Math.cos((i+1)*30*TO_RADIANS);
      var endy = r1*Math.sin((i+1)*30*TO_RADIANS);
      var ax = endx+r1*a*Math.cos(((i+1)*30-90)*TO_RADIANS);
      var ay = endy+r1*a*Math.sin(((i+1)*30-90)*TO_RADIANS);
      curveTo(ax, ay, endx, endy);
      i++;
    }
    moveTo(0, 0);
    lineTo(r2, 0);
    var i = 12;
    while (i>0) {
      var endx = r2*Math.cos((i-1)*30*TO_RADIANS);
      var endy = r2*Math.sin((i-1)*30*TO_RADIANS);
      var ax = endx+r2*-a*Math.cos(((i-1)*30-90)*TO_RADIANS);
      var ay = endy+r2*-a*Math.sin(((i-1)*30-90)*TO_RADIANS);
      curveTo(ax, ay, endx, endy);
      i--;
    }
    endFill();
  }
  if (doHide) {
    target_mc[instance]._visible = false;
  }
  return (target_mc[instance]);
}
 
drawRing(mc_loader, "mask", radius, radius-radius_diff, 0x0000FF);

没有评论: