flash 做波的传播时遇到的问题
来源:百度知道 编辑:UC知道 时间:2024/05/17 02:07:27
哪为大虾帮我看问题在哪,
我希望的结果是波开始后一直动下去,流畅的动下去。像第一个球那样,而不是像后面的又跳回到第一针开始放。。。
帮我解决了追加50分哦~
我只看了点flash视频教程,所以不怎么懂,各位大虾多帮忙啊~
一.思路分析
从机械波的形成过程来看,它是由于振动质点通过相互作用力带动与之相邻的质点,通过相邻的点把振动形式传播出去从而形成机械波,这样就必须解决两个问题:
1、每一个质点都按照y=Acos(ωt+φ)的规律振动
2、不是所有的点都同时开始动的,他们有一定的相位差,靠近波源的点先振动。
二、实现方法
这里我只介绍横波的模拟动画。要使得质点振动,我们只需使它的y方向的位移按规律y=Acos(ωt+φ)变化即可,可以用这样的语句实现
this._y=y0+r*Math.cos(j*Math.PI/180+m)
说明:y0是平衡位置的y坐标,所有点的y0都是一样的,ω写成Math.PI/180,是把角度换成弧度制,
三.制作步骤
1、绘制质点小球(电影剪辑)。
进入主场景,选中椭圆工具,设置渐变色,如图1,按住Ctrl键和鼠标左键,在主场景中画出一个小球。
选中小球,单击鼠标右键,选择[转换为元件】(或按F8),在弹出的对话框中选择影片剪辑,注册点选在中间,单击【确定】按钮把小球转换为电影剪辑如图2
选中小球,打开右下角的它的属性面板,命名为my_mc如图3
2.实现小球的运动
选中小球,打开下方的动作面板,输入脚本, 如图4
下面我把这段代码作简单解释:
onClipEvent (load) {}表示当剪辑显示在时间轴上时,k、r、y0被初始化,其中k的初始化可能会比较难理解,它是把该电影剪辑的名字作为它的值的,而它的名字到底又是什么呢?后面会讲到,它的名字实际上分别是0到N的整数,这样做的目的何在呢?请往下看:
onClipEvent (enterFrame) {}是当剪辑显示在时间轴上后,一直重复做的事情
那就是k不断被减2(可以任意数),再用一个if语句判断,如果k<=0成立,开始执行语句this._y = y