本实例中一对立体的线框会不断旋转运动,并且可以感应到鼠标的活动,从而产生运动的变化,本实例最终效果如图1所示;
图1 最终效果
1.首先启动Flash,新建一个影片,设置影片舞台大小为400px*300px(单位为象素),设置影片背景色为浅黄色,颜色代码为#FFCC00.
2.将影片默认的图层重命名为BackLine,为了使线框的运动能比较明显的看出来,可以给影片背景加一些参照物,这里我们给影片添加一个简单的坐标系统.使用直线工具和文本工具绘制如图2所示的坐标系统,这个左边系统比较简单,你也可以根据自己的需要来修改:
图2 绘制坐标系统
3.接下来制作组成线框的直线部分.新建一个影片剪辑元件,命名为line,进入元件的编辑区后,使用直线工具绘制一条水平直线即可,如图3所示;
图3 绘制直线
4.因为影片中线框和鼠标会发生感应,需要得到类似鼠标坐标这样的信息,所以还需要建立一个空的影片剪辑,然后用鼠标对其拖动,只要得到这个空剪辑的坐标,就相当于得到拉鼠标的坐标,这也是Flash动画中常用到的小技巧,这里我们就建立影片剪辑run,里面什么都不用设置,空的即可.
5.回到主场景,新建一个图层命名为line,然后将元件run拖到场景中的任意位置,在属性面板中设置其实例名为run,如图4所示;
图4 给空剪辑设置实例名
6.接下来还需要将元件line拖到舞台中,因为影片中的线框其实是用一些直线借助Action来生成的,而影片中一共两个线框,每个线框四条边,这样就需要分8次将直线line拖到工作区中,注意不要拖到舞台中,不然在最后的影片中会被看到,如图5所示;
图5 在影片中添加直线
7.同样需要给每条直线设置实例名,按照从上向下的顺序分别设置8条直线为line1到line8,最后在第1帧添加如下action:
center_x=200; center_y=150; d= 500; function drawline (x1,y1,z1,x2,y2,z2,num) { x1=(x1/(z1+d))*d; y1=(y1/(z1+d))*d; x2=(x2/(z2+d))*d; y2=(y2/(z2+d))*d; x1 += center_x; y1 = center_y - y1; x2 += center_x; y2 = center_y - y2; dx= x2 - x1; dy= y2 - y1; line_length = Math.sqrt(dx*dx+dy*dy); angle = Math.atan(dy/dx); angle = angle*180/Math.PI; setProperty ("line" add num, _x, x1); setProperty ("line" add num, _y, y1); if (dx < 0){ angle = angle-180; } setProperty ("line" add num, _rotation, angle); setProperty ("line" add num, _xscale, line_length); } //////////////////////// px = new Array(8) py = new Array(8) pz = new Array(8) px[0] = 100; py[0] = 100; pz[0] = 25; px[1] = -100; py[1] = 100; pz[1] = 25; px[2] = -100; py[2] = -100; pz[2] = 25; px[3] = 100; py[3] = -100; pz[3] = 25; px[4] = 100; py[4] = 100; pz[4] = -25; px[5] = -100; py[5] = 100; pz[5] = -25; px[6] = -100; py[6] = -100; pz[6] = -25; px[7] = 100; py[7] = -100; pz[7] = -25;
|