5D艺术网首页
商城
|
资讯
|
作品
|
博客
|
教程
|
论坛
登录
注册
加为好友
发短消息
来自:西安
性别:先生
最后登录:2014-09-24
http://dzxz.5d.cn/
学习编程纯属业余爱好,但时间久了,或多或少就有了一点点的经验和心得。接触 Flash 程序设计是从2005年的10月以后才开始的,在学习Flash的过程中得到了 闪客启航UC聊天室 很多朋友和老师的非常大的帮助,这对我的学习的方向也产生了较大的影响。 目前对游戏设计、课件制作有较浓厚的兴趣,在博客中写了一些这方面的分析文章,与大家一起分享编程的快乐,并且希望我的课件设计方面的讨论对教师朋友能有所帮助。
首页
|
新闻
|
话题
|
博客
|
相册
|
艺术作品
|
社交关系
|
留言板
|
社交圈
2006/02/16 | 数学函数控制MC旋转——Lab No.2
类别(Flash课件设计)
|
评论
(1)
|
阅读(349)
|
发表于 23:00
涉及到AS 动态控制MC 旋转的代码通常都会很麻烦,但偏偏又总是能遇到,为了彻底征服这一主题,我准备在最近的几次实验室分析中把我手头几个典型的MC 旋转效果代码拿出来做一分析。
本次的示例中采用的是先计算出MC 中元件统一的旋转角度,再逐个计算出转动的位移距离,将元件移动到新的位置上去,从而实现整体旋转的效果。
Flash 动画
:
点击左侧的按钮,实现了增加/删除MC 的功能,右侧的按钮,实现了增加/删除辅助线的功能。两个按钮中都使用了相似的"开关"参数,分别由s2 和s1 来控制,点击一次参数改变一次值,下次点击执行不同的代码段。
拖动MC 中的箭头,指针按线条的顶点旋转;拖动MC 方形的尾,指针按线条另一端旋转;拖动线条,MC 整体移动。
Symbol6 是核心的MC 元件,在它的第一帧中,写入了全部的用于实现旋转的AS代码。首先是变量定义:
initRotation = 0; //线条的初始旋转度数。
lineWidth = 200; //线条的宽度,实际上是线条的长度。
rotaRadius = 50; //旋转半径,用来指定箭头和箭尾的位置。
接下来创建一个空MC,再在其中的不同层上分别加入库中的元件,并设置了相应的初始位置及旋转角度,若线条的初始旋转角度不为零,其它两个部件将会自动生产相应的变化。
this.createEmptyMovieClip("rsgxMc", 1);
rsgxMc.attachMovie("gx_gx", "gLine", 1);
rsgxMc.attachMovie("gx_jd", "Arrow", 2);
rsgxMc.attachMovie("gx_kzb", "Tail", 3);
旋转的动作是通过 onEnterFrame 事件来驱动的,旋转的角度是通过gx_rotation = function (x1, y1, x2, y2) 函数来计算。变量c 为1,表示拖动的是箭尾,变量b 为1,表示拖动的是箭头。
rsgxMc_x,rsgxMc_y 用来记录线条的新位置。
最后再重新计算出箭头和箭尾的新位置,从而完成旋转的动作。
为了确保鼠标操作的正确,分别在 onRelease 和onReleaseOutside 事件函数中对鼠标的动作做出响应。
座标的换算中采用的是基本的数学函数,MC 中元件的_x 和_y 直接表示的就是该元件的注册点位置座标,因此在本例中,只要注册点位于单个元件的中心,旋转角度一致时,所有的元件都会在一条线上排列。关于注册点的测试,请参考我的另一篇文章《注册点和中心点》。
下次分析一个结构更为严谨的动态改变注册点的例子,今天的分析就到这里吧。
0
评论
Comments
日志分类
首页
[295]
Flash游戏教程
[33]
Flash与飞行程序设计
[10]
Flash课件设计
[62]
Flash学习笔记
[74]
家住西安
[47]
编程资源
[69]