论文部分内容阅读
在制作Flash动画时,需要对象不按固定方向运动,而是对象自己能够自我控制,如何做到这点呢?下文以化学课件中的自由分子运动为例,讲解如何通过动作脚本让对象运动,使自由分子运动更加形象、逼真。
首先执行“插入/新建元件”命令,创建一个影片剪辑,命名“分子”。然后利用工具箱上的椭圆、颜料桶、填充变形工具,绘制出分子,为方便可以用两层来表示。利用对齐工具,使其居于场景的中心点。
回到场景1中,将图层1重新命名为“分子”。从元件库中,将“分子”影片剪辑拖放到舞台中,命名为“mole-cule”。选中molecule对象,打开动作脚本编辑窗口,赋予其动作脚本。当molecule对象被加载时,为方便控制代码调用采用全局变量的格式来初始化一些参数。
onClipEvent (load) {//对象运行速度。_root.speed = 50;//用随机函数random()让对象在x、y轴方向上运行速度具有随机性。_root.dx = random(10)/10;_root.dy = random(10)/10;//表示对象的运动状态,当其值为1时,对象运动;当其值为0时,对象静止。可以根据自己的需要,在场景中添加两个控制按钮,一个按钮控制停止,另一个按钮控制播放,按钮控制代码就是通过改变_root.go的值。_root.go = 1;//h1、h2、w1、w2分别表示运动范围的上、下、左、右边沿。_root.h1 = 10;_root.h2 = 470;_root.w1 = 10;_root.w2 = 630;}
控制代码主要用于控制molecule对象,使其能够在预定范围内运动,在没有超出范围时,其运动轨迹为直线,当超出或到达规定范围时,按反方向作直线运动。执行“插入/新建元件”命令,创建一个影片剪辑,并取名为“action”。在action影片剪辑中,通过执行“插入/时间轴/空白关键帧”命令,创建三个空白关键帧,并给三个关键帧分别赋予不同的动作脚本,形成完整的控制代码。
第一帧脚本为://判断当前运行状态,如果状态为1,则运行到第二帧;反之停止。
if (_root.go==1) {gotoAndPlay (2);} else {stop();}
第二帧脚本为://获取对象的当前位置。xx = getProperty("_root.molecule", _x);yy = getProperty("_root.molecule", _y);//根据对象当前位置,在x、y轴方向上分别增加一个增量(其增量为速度*随机量),求得新位置的坐标值。xxx=xx
_root.speed*_root.dx;yyy=yy _root.speed*_root.dy;//判断新位置是否超出预定范围,如超出取反方向重计算。if ((xxx>=_root.w2) or (xxx<=_root.w1)) {//x轴方向。_root.dx=-1*_root.dx;xxx=xx
_root.speed*_root.dx;}
if ((yyy>=_root.h2) or (yyy<=_root.h1)) {//x轴方向。_root.dy=-1*_root.dy;yyy=yy _root.
speed*_root.dy;}
//计算对象的新位置,并旋转一个角度。setProperty ("_root.molecule", _x, xxx);setProperty ("_root.molecule", _y, yyy);setProperty ("_root.molecule", _rotation, yyy);
第三帧脚本为://判断对象的运行状态,如果为1,继续跳转到第二帧;否则停止运动。
if (_root.go==1) {gotoAndPlay (2);} else {stop ();}
回到场景1中,新建一个图层,并命名为“控制代码”,将“action”影片剪辑从元件库中拖放到此层的第一帧。在场景1中,再新建一个图层,命名为“外框”,沿场景边沿绘制一个矩形,并设置其宽度为10。
首先执行“插入/新建元件”命令,创建一个影片剪辑,命名“分子”。然后利用工具箱上的椭圆、颜料桶、填充变形工具,绘制出分子,为方便可以用两层来表示。利用对齐工具,使其居于场景的中心点。
回到场景1中,将图层1重新命名为“分子”。从元件库中,将“分子”影片剪辑拖放到舞台中,命名为“mole-cule”。选中molecule对象,打开动作脚本编辑窗口,赋予其动作脚本。当molecule对象被加载时,为方便控制代码调用采用全局变量的格式来初始化一些参数。
onClipEvent (load) {//对象运行速度。_root.speed = 50;//用随机函数random()让对象在x、y轴方向上运行速度具有随机性。_root.dx = random(10)/10;_root.dy = random(10)/10;//表示对象的运动状态,当其值为1时,对象运动;当其值为0时,对象静止。可以根据自己的需要,在场景中添加两个控制按钮,一个按钮控制停止,另一个按钮控制播放,按钮控制代码就是通过改变_root.go的值。_root.go = 1;//h1、h2、w1、w2分别表示运动范围的上、下、左、右边沿。_root.h1 = 10;_root.h2 = 470;_root.w1 = 10;_root.w2 = 630;}
控制代码主要用于控制molecule对象,使其能够在预定范围内运动,在没有超出范围时,其运动轨迹为直线,当超出或到达规定范围时,按反方向作直线运动。执行“插入/新建元件”命令,创建一个影片剪辑,并取名为“action”。在action影片剪辑中,通过执行“插入/时间轴/空白关键帧”命令,创建三个空白关键帧,并给三个关键帧分别赋予不同的动作脚本,形成完整的控制代码。
第一帧脚本为://判断当前运行状态,如果状态为1,则运行到第二帧;反之停止。
if (_root.go==1) {gotoAndPlay (2);} else {stop();}
第二帧脚本为://获取对象的当前位置。xx = getProperty("_root.molecule", _x);yy = getProperty("_root.molecule", _y);//根据对象当前位置,在x、y轴方向上分别增加一个增量(其增量为速度*随机量),求得新位置的坐标值。xxx=xx
_root.speed*_root.dx;yyy=yy _root.speed*_root.dy;//判断新位置是否超出预定范围,如超出取反方向重计算。if ((xxx>=_root.w2) or (xxx<=_root.w1)) {//x轴方向。_root.dx=-1*_root.dx;xxx=xx
_root.speed*_root.dx;}
if ((yyy>=_root.h2) or (yyy<=_root.h1)) {//x轴方向。_root.dy=-1*_root.dy;yyy=yy _root.
speed*_root.dy;}
//计算对象的新位置,并旋转一个角度。setProperty ("_root.molecule", _x, xxx);setProperty ("_root.molecule", _y, yyy);setProperty ("_root.molecule", _rotation, yyy);
第三帧脚本为://判断对象的运行状态,如果为1,继续跳转到第二帧;否则停止运动。
if (_root.go==1) {gotoAndPlay (2);} else {stop ();}
回到场景1中,新建一个图层,并命名为“控制代码”,将“action”影片剪辑从元件库中拖放到此层的第一帧。在场景1中,再新建一个图层,命名为“外框”,沿场景边沿绘制一个矩形,并设置其宽度为10。