- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
三角学在Flash AS3中的应用及探讨
摘要:该文从三角学原理出发,形象、生动的来解析三角形算法在AS3.0编程中的原理和基本应用。
关键词:三角形 AS3;坐标;函数;象限
中图分类号:TP31 文献标识码:A文章编号:1009-3044(2011)30-7555-03
三角学研究的是三角形的边与角之间的关系,它的边与角有着非常特殊的关系,三角形的一种特殊类型是三个角中其中有一个是90度角。而在Adobe Flash的坐标系统中,几乎只使用这种直角三角形就能正确计算注册点的x、y的坐标值,所以这里我们只研究直角三角形在AS3编程中的应用。
1 角度和弧度
测量角主要是用度和弧度。在AS3的三角函数中我们必须首先把“度”转化为“弧度”才能使函数的计算达到正确的目标。
我们都知道2л=360°,л在AS3中使用函数Math.PI表示,所以我们可以采用以下的公式进行弧度和角度之间的相互转换:
radian = degree * (Math.PI/180);
degree = radian * (180/Math.PI)。
2 Flash坐标系统
标准的二维坐标系统使用x表示水平坐标,y表示垂直坐标,原点位于中心。
Flash坐标系统也是使用x表示水平坐标,y表示垂直坐标,不同的是它的坐标原点在屏幕的左上角,且距离单位是像素。特别要注意的是y轴向下是正轴,刚好跟标准坐标是反向的。
在角的标准测量中0度为x轴的正轴线,角度的正值是基于这条线的逆时针方向,顺时针方向是角度的负值;而在Flash中,也是反向的,即逆时针是负的角度,顺时针是正的角度:
3 边长的计算方法
在三角学中,求三角形的边长可以使用正弦函数、余弦函数或正切函数。正弦函数是一个角的对边与斜边的比值,余弦是邻边与斜边的比值,这里我把这种数学关系直接应用于Flash坐标系统中。
我们根据Flash坐标系统关系可以断定x为正值,y 为负值,假设的斜边长度为2,我们分别求y和x的值。
//先将“度”转化为“弧度”
Radian = -30*(Math.PI/180);
//使用正弦函数求y值
y = 2*Math.sin(Radian);
//使用余弦函数求x值
x = 2*Math.sin(Radian);
这样可以求算得到x = 1,y= -1.73。
举AS3编程为例,想要实现的目标是让一个圆形精灵以一个固定点为圆心做一个等速运动。
首先我们需要一个Ball.as类包,来创建一个圆形精灵,代码如下:
package {
import flash.display.Sprite;
public class Ball extends Sprite {
private var radius:Number;
private var color:uint;
//构造函数
public function Ball(radius:Number=40, color:uint=0xff0000) {
this.radius = radius;
this.color = color;
init();
}
// 绘制实际的圆形
public function init():void {
graphics.beginFill(color);
graphics.drawCircle(0, 0, radius);
graphics.endFill();
}}}
然后,我们使用Circle.as类来具体实现这个圆形运动,代码如下:
package
{//导入精灵类,因为前面创建的Ball类是一个精灵物体,所以必须导入
import flash.display.Sprite;
//导入事件,因为圆形运动是基于帧听事件来生成的
import flash.events.Event;
public class Circle extends Sprite {
private var ball:Ball;
//运动起始角度
private var angle:Number = 0;
//定义圆心点坐标,单位为像素
private var centerX:Number = 200;
private var centerY:Number = 200;
//定义圆形运动的半径,单位为像素
private var radius:Number
文档评论(0)