鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 网站制作教程 > flash > >

[AS功能代码教程04]进阶三角函数

来源:互联网 作者:佚名 时间:2016-03-14 10:14
在AS 03教程中,我们介绍了关于三角函数基础运用 现在为上次课的内容加以补充和发展 复习一下画圆的要领:x坐标cos(n),y坐标sin(n); n 从0~360的弧度 一、制作椭圆 比较一下,我们只是把画圆要领中 R ,一分为二。 分成了 W 和 H 分别控制椭圆的宽和高。 _roo

  在AS 03教程 中,我们介绍了关于三角函数基础运用
  现在为上次课的内容加以补充和发展
  复习一下画圆的要领 :x坐标cos(n),y坐标sin(n); n 从0~360的弧度
  一、制作 椭圆
  比较 一下,我们只是把画圆要领 中 R ,一分为二。
  分成了 W 和 H 分别控制椭圆的宽和高。
_root.createEmptyMovieClip("MC", 1);
MC._x = 200;
MC._y = 200;
//建立 一个空影片剪辑,放在舞台中央作为画线容器
var W = 50;
var H = 30;
//椭圆宽:W,椭圆高:H.
MC.moveTo(W*s(0), H*Math.sin(0));
//配置 画线起点
MC.lineStyle(2);
for (n=1; n < 360; n++) {
 tox = W*s(n*Math.PI/180);
 toy = H*Math.sin(n*Math.PI/180);
 MC.lineTo(tox, toy);
}
//当W=H的时候,画出的就是正圆。

  二、椭圆分配
   在学习AS 03教程 中我们介绍了多边型的画法,有了这个基础在打造 本实例就是小菜一碟啦.^_^
  实例1:
  步骤1:
   制作 星形,保存为影片剪辑,连接—>导出—>标志符"star"
  步骤2:
  加入AS代码:
_root.createEmptyMovieClip("MC", 1);
MC._x = 200;
MC._y = 200;
var Num = 22;
//星星数量
var W = 200;
var H = 100;
//椭圆宽:W,椭圆高:H;当W=H时是正圆
var angle = (360*Math.PI/180)/Num;
//每等份 = 圆的弧度(360*PI/180)/num份
for (i=0; i < num; i++) {
 MC.attachMovie("star", "star"+i, i);
 MC["star"+i]._x = W*s(i*angle);
 MC["star"+i]._y = H*Math.sin(i*angle);
}
//复制num个以ang为距离平均分散到圆中 

实例2:
  步骤1:
   制作 星形,保存为影片剪辑,连接—>导出—>标志符"star"
  步骤2:
  加入AS代码:
var num = 22;
//星星数量
var W = 60;
var H = 30;
//椭圆的宽和高
var wdir = 1;
var hdir = 1;
//wdir:向宽的方向
//hdir:向高的方向
_root.createEmptyMovieClip("MC", 1);
MC._x = Stage.width/2;
MC._y = Stage.height/2;
//圆心X,Y坐标为舞台的中心
 
var angle = (360*Math.PI/180)/num;
//每等份 = 圆的弧度(360*PI/180)/num份
for (i=0; i < num; i++){
 MC.attachMovie("star", "star"+i, i);
}
//复制好星星备用
var right = Stage.width/2-20;
var left = 20;
var bottom = Stage.height/2-20;
var top = 20;
//配置 圆的最宽最窄值:wmax,wmin;配置 圆的最高最矮值:hmax,hmin。

_root.onEnterFrame = function () {
 for (i=0; i < num; i++) {
  MC["star"+i]._x = W*s(i*angle);
  MC["star"+i]._y = H*Math.sin(i*angle);
  MC["star"+i]._rotation += 30;
 }
//圆的大小W和H是动态改动 的
 W += wdir*5;
 H += hdir*5;
 
 if (W > wmax) {
  wdir *= -1;
 }
 if (W < wmin) {
  wdir *= -1;
 }
 if (H > hmax) {
  hdir *= -1;
 }
 if (H < hmin) {
  hdir *= -1;
 }
};

三、Sin文字串
  步骤1:
   拖出一个动态文本框,变量名为txt,保存为影片剪辑。
   在库中右击这个MC文件—>链接—>勾选"为ActionScript 导出"和"在第一帧导出"这两项,"标识符"为"ST".
  步骤2:
  加入AS代码:
var mytext:String = "学海无涯苦作舟";
var angle = 180/mytext.length;
//正弦图像(180度)根据字数划分每一份的度数
for (i=0; i < mytext.length; i++) {
 var p:MovieClip = _root.attachMovie("ST", "ST"+i, i);
 p.txt = mytext.charAt(i);
 //逐个取出字符
 p._x = 50+65*i;
 p._y = 60;
 //原始该影片的位置
 p.angle = angle*i;
 //定义属性表示原始角度
 p.onEnterFrame = function() {
  this.A = (this.angle)*Math.PI/180;
  //角度转换为弧度
  this._xscale = this._yscale=100+50*Math.sin(this.A);
  //根据正弦角度,调整该影片大小,范围从[50~150]
  this.angle += 10;
 };
}

  系列文章:
  [AS 功能代码教程 01] 通用延迟代码
  [AS 功能代码教程 02]数字魔方及数组
  [AS 功能代码教程 03] 基础三角函数
  [AS 功能代码教程 05] 打字机效果
  [AS 功能代码教程 06]AS绘图总结及补充
  [AS 功能代码教程 07] 百变图
  [AS 功能代码教程 08] Bitmap 动态效果
  [AS 功能代码教程 09] 点阵字效果
  [AS 功能代码教程 10]数据结构排序算法
  [AS 功能代码教程 11] 图片转场效果
  [AS 功能代码教程 12] 填色游戏
  [AS 功能代码教程 13] 贪吃蛇
  [*AS 功能代码教程 14] 鱼眼放大镜
  [AS 功能代码教程15] 点间距离公式

  

网友评论
<