as 进阶三角函数及应用
在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*Math.cos(0), H*Math.sin(0));
//设置画线起点
MC.lineStyle(2);
for (n=1; n<360; n++)
{
tox = W*Math.cos(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*Math.cos(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*Math.cos(i*angle);
MC["star"+i]._y =
H*Math.sin(i*angle);
MC["star"+i]._rotation +=
30;
}
//圆的大小W和H是动态改变的
W += wdir*5;
H += hdir*5;
//不断变化中的W和H
if
(W>right || W<left) {
wdir *= -1;
}
if (H>bottom || H<top) {
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;
};
}
补充:flash教程,Action