×

关注微信公众号

免备案网站空间虚拟主机双线空间域名查询PS数码后期
photoshop互助课堂数百G视频教程下载英语培训机构初中英语如何学随时随地聆听大师开讲/课堂
路径专辑手绘教程抠图教程酷素材photoshop cs3视频教程
查看: 6868|回复: 6

[AS] 倾斜角与斜率[本文已收录教程库]

[复制链接]
发表于 2009-5-18 08:17:30 | 显示全部楼层 |阅读模式
本帖最后由 xyl7422 于 2009-9-2 13:31 编辑

倾斜角与斜率

演示:

坐标中的两点可以确定一条直线,直线与线段不同,线段有长度,而直线是没有长度的。通过两点可以确定一条直线,通过角度和一个定点也能确定一条直线。

    直线与X轴正半轴所成的角称直线的倾斜角,当倾斜角不等于90度时,倾斜角的正切称为直线的斜率。图:
其中角a就是直线的倾斜角,而斜率就是直角三角中对边BC与邻边AB的比值,即正切值。正切值通过Math类的tan()方法可以得到。

    给定A点和C点的坐标,可求得角a的角度值。

   求角a的正切值的算法:
    (C.y - A.y) / (C.x - A.x);

    下面的代码求直线的斜率:
    (C.x == A.x)?Infinity:(C.y - A.y) / (C.x - A.x);
代码先判断两点的横坐标是否相等,如果相等,说明直线垂直于x轴,这时不存在斜率,所以给斜率一定特殊值Infinity。
例:

1、新建Flash文档,取名存盘。

2、创建影片剪辑,图层1用椭圆工具绘制一个圆,填充色和大小根据需要定。插入图层2, as层,输入代码:

//注册鼠标按下事件侦听器
this.addEventListener(MouseEvent.MOUSE_DOWN,startDragFunc);
//注册鼠标释放事件侦听器
this.addEventListener(MouseEvent.MOUSE_UP,stopDragFunc);
//定义接收按下事件的函数
function startDragFunc(e:MouseEvent);
{
                  //开始拖动
        e.target.startDrag();
                  //更新显示
        e.updateAfterEvent() ;
}
//定义接收释放事件的函数
function stopDragFunc(e:MouseEvent);
{
                  //停止拖动
        e.target.stopDrag()
}

3、返回场景1,在图层1的第一帧拖入两个影片剪辑,在属性面板中输入剪辑的名字,p1 、p2。

4、插入图层2,选择文本工具,创建静态文本,字体大小15 、字体自定。输入:斜率:在右面创建动态文本,名:k_txt。在下面再次创建静态文本,输入:倾斜角:右面创建动态文本,名:a_txt。

5、插入图层3,as层。输入代码:

//导入数学函数
include "Math2.as";
//创建两个点
var A:Point=new Point()
var B:Point=new Point()

//创建用于绘制箭头的容器
var arrow_shape:Shape=new Shape();
this.addChild(arrow_shape);
stage.addEventListener(Event.ENTER_FRAME,loop);

function loop(e:Event):void
{
                  //清除绘图
        arrow_shape.graphics.clear();
                  //在两点间绘制箭头
        drawArrow(arrow_shape.graphics,p1.x,p1.y,p2.x,p2.y);
                  //设置点A的值
        A.x=p1.x;
        A.y=p1.y;
                  //设置点B的值
        B.x=p2.x;
        B.y=p2.y;
                  //根据点A和点B创建直线
  1. var line:Line=new Line(A,B);
复制代码
//把斜率保存两位小数,并转换为字符串显示出来
        k_txt.text=line.K.toFixed(2);
                  //把倾斜角取整后显示
        a_txt.text=line.angle.toFixed();
}

上面的代码把弧度和角度转换等函数放在Math2.as文件中,通过include导入Math2.as文件就可以使用这些数学函数。Math2.as文件中添加了绘制箭头的函数drawArraw()。

5、测试影片,看一下效果。如果需要输出p2的x、y坐标添加代码:

x_txt.text = p2.x;
y_txt.text = p2.y;

界面上添加静态文本和动态文本就不用细说了吧,如果不需要显示斜率注释掉。
本帖的地址:http://bbs.jcwcn.com/forum.php?mod=viewthread&tid=246326
跟着教程做一遍,做完的图要到这里评论交作业,教程有看不懂的地方,可以在贴子下面评论

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?[立即注册]

x

评分

参与人数 3金币 +15 威望 +1 热心度 +4 收起 理由
祁连山 + 1 支持教程哈,辛苦啦.
xyl7422 + 7 + 2 对论坛做出贡献
zctmh0336 + 8 + 2 不错,支持

查看全部评分

发表于 2009-5-18 16:53:33 | 显示全部楼层
酷素材
上面的代码把弧度和角度转换等函数放在Math2.as文件中,通过include导入Math2.as文件就可以使用这些数学函数。Math2.as文件中添加了绘制箭头的函数drawArraw()。

做不出来,太高级,上面那些话看不懂^ ^
                                                     ^
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-18 19:16:45 | 显示全部楼层
4# 十兄
把压缩包解压到任意目录下,其中有3个文件,图:

打开Flash,选菜单【文件】【打开】在打开面板中找到存放的解压文件,双击名为lina的FLA文件,FLA文件打开后,按Ctrl+Enter组合键,或选菜单【控制】下的测试影片就可以运行了。

Math2.as文件中是弧度和角度转换代码,包括绘制箭头的函数drawArrow();drawArrow是绘制箭头,教程上误把Arrow输入成了Arraw。

Line.as文件中是处理直线的代码,通过Line类的K属性可以得到直线的斜率,通过angle属性可以得到直线的倾斜角。

FLA文件中的第1行代码:include "Math2.as"是把Math2.as文件导入进来使程序运行。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?[立即注册]

x
回复 支持 反对

使用道具 举报

发表于 2012-6-25 10:28:23 | 显示全部楼层
压缩文件找不到,做不出。难过。
回复 支持 反对

使用道具 举报

发表于 2013-6-20 10:47:07 | 显示全部楼层
酷素材
怎么找到这个压缩文件呢?Math2.as
回复 支持 反对

使用道具 举报

发表于 2013-11-29 11:15:03 | 显示全部楼层
酷素材
强烈支持楼主。。。
回复 支持 反对

使用道具 举报

发表于 2017-8-24 20:54:46 | 显示全部楼层
好帖就是要顶
回复 支持 反对

使用道具 举报

发表于 2017-8-24 20:16:06 | 显示全部楼层
真心顶。。。。
回复 支持 反对

使用道具 举报

发表于 2017-8-24 20:12:10 | 显示全部楼层
不错不错
回复 支持 反对

使用道具 举报

发表于 2017-8-24 20:42:02 | 显示全部楼层
果断收藏了
回复 支持 反对

使用道具 举报

发表于 2017-8-24 20:49:37 | 显示全部楼层
楼主我支持你
回复 支持 反对

使用道具 举报

发表于 2017-8-28 16:28:42 | 显示全部楼层
难得一见的好帖
回复 支持 反对

使用道具 举报

发表于 2017-8-28 16:43:28 | 显示全部楼层
说的非常好
回复 支持 反对

使用道具 举报

发表于 2017-8-28 16:54:54 | 显示全部楼层
不错不错
回复 支持 反对

使用道具 举报

发表于 2017-8-28 16:32:08 | 显示全部楼层
果断收藏了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | [立即注册]

本版积分规则

2345