2006/07/09 | 一个小课件及源码
类别(Flash课件设计) | 评论(0) | 阅读(160) | 发表于 18:15


Flash 动画

  写了一个下午,复习了一下旋转函数,另外学习了组织文档结构,fla文件可以通过反编得到,AS代码如下:
var angle = 23.5;
//初始角度,该角度与十字线元件的旋转角度相关联
var radius = earth_mc._width / 2;
//旋转半径,也就是球的半径
var hot_height = 2 * radius * Math.sin(Math.PI * angle / 180);
//由半径和角度换算出热带的高度
var mid_height = 2 * radius * Math.cos(Math.PI * angle / 180);
//由半径和角度换算出温带的高度
crossLine_mc._rotation = 90 - angle;
//十字线的旋转度数,设计时,十字线顶向上,所以有90度的偏差
angles = angle;
//文本框变量用来显示当前的角度
hot_area_mc._height = hot_height;
mid_area_mc._height = mid_height;
crossLine_mc.edge.onPress = function() {
  //拖动开始后,不断的计算出新的角度,并以此角度刷新各个变量.
  _root.onEnterFrame = function() {
    angle = get_angle(_root._xmouse, _root._ymouse, earth_mc._x, earth_mc._y);
    //新的角度是以球心为旋转中心,主场景鼠标为旋转边来进行计算的.
    hot_height = Math.abs(2 * radius * Math.sin(Math.PI * angle / 180));
    //高度不能为负,而三角函数值有可能为负,所以这里要加上取绝对值函数.
    mid_height = Math.abs(2 * radius * Math.cos(Math.PI * angle / 180));
    crossLine_mc._rotation = 90 + angle;
    //计算出的角度的函数与旋转角度有90偏差.
    angles = Math.abs(angle);
    angles = (angles > 90) ? (180 - angles) : angles;
    angles = Math.round(angles * 10) / 10;
    //用于显示的角度范围为0至90度,没有负值
    hot_area_mc._height = hot_height;
    mid_area_mc._height = mid_height;
  };
};
crossLine_mc.edge.onRelease = function() {
  delete _root.onEnterFrame;
  //正常释放鼠标,删除循环.
};
crossLine_mc.edge.onReleaseOutside = function() {
  delete _root.onEnterFrame;
  //元件外释放鼠标,同样删除循环.
};
function get_angle(x1, y1, x2, y2) {
  //自定义的求角度函数,
  //座标点x1,y1 表示旋转的外边线上的点.
  //座标点x2,y2 表示旋转的中心点.
  var temp = Math.atan2(y1 - y2, x1 - x2) * 180 / Math.PI;
  temp = Math.round(temp * 10)/ 10;
  //小数位保留一位.
  return temp ;
}
0

评论Comments