当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > Flash AS3.0实例教程:AS3.0代码制作3D旋转动画效果

Flash动画制作
赤手空拳下载Flash
创建一个Flash站点的十大技巧
用Flash制作Google搜索程序
枫桥夜泊下 遮罩效果的动态文本
Flash MX 2004 ActionScript图文教程(十二)
Flash实例教程 扫描文字效果
Flash MX 2004 ActionScript图文教程(十三)
快速制作您的flash图表
Flash MX 2004 ActionScript图文教程(十四)
Flash实例教程 变幻的字母
Flash MX 2004 ActionScript图文教程(十五)
Flash实例教程 相约北京 扬帆青岛
Flash教程实例 光线特效文字
Flash课件实例 画正多边形
Flash课件实例 平行四边形法则
Flash实例教程 小孔成像课件
精简Flash文件体积七法
Flash教程实例:水中浮动的文字
金鸡贺岁!Flash制作鸡年新春动画贺卡
Flash MX 2004新特性实例学习一

Flash动画制作 中的 Flash AS3.0实例教程:AS3.0代码制作3D旋转动画效果


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 769 ::
收藏到网摘: n/a

〖本教程着重于代码的编写,版本AS 3.0。图形元件的制作不作讲解,请参看有关教程。〗

1、新建Flash文档,创建5 个图形,(或导入5张图片到库中)。

2、创建一个影片剪辑,1层为图片层2层为代码层。在1层把5张图片分别放在5帧中,在代码层输入stop(); 如图:

Flash AS3.0实例教程:AS3.0代码制作3D旋转动画效果_软晨学习网

3、Ctrl + L 打开库,右键单击影片剪辑实例做链接,类名为:IconMenu 如图:

4、返回场景1,图层1为背景层,图层2为代码层。在图层1导入背景图片。图层2输入代码:

1. include "Math2.as"
2. //图片容器
3. var menu:Sprite=new Sprite();
4. //使图标移动
5. menu.x = 300;
6. menu.y = 200;
7. //注册事件侦听器
8. menu.addEventListener(Event.ENTER_FRAME,moveMenu);
9. this.addChild(menu);
10. //椭圆在x 和y 轴上的截距
11. var disx:Number = 200;
12. var disy:Number = 10;
13. //旋转速度
14. var speed:Number = 0;
15. initMenu(5);
16. function initMenu(n:int) {
17. for (var i:int; i<n; i++) {
18. var mc:MovieClip = new IconMenu();
19. //缩小图标
20. mc.scaleX = mc.scaleY = .5;
21. menu.addChild(mc);
22. }
23. }
24. //事件侦听器函数
25. function moveMenu(e:Event):void {
26. //获取图标数
27. var iconCount:int = menu.numChildren;
28. //定义数组
29. var depthArray:Array = new Array();
30. //把360度平分
31. var angle:Number = 360 / iconCount;
32. for (var z:int; z<iconCount; z++) {
33. //根据深度获取图标
34. var mc:MovieClip = menu.getChildAt(z);
35. //跳转到不同帧,来显示不同的图标
36. mc.gotoAndStop(z+1);
37. //设置图标的位置
38. mc.x = cosD(speed + angle*z) * disx;
39. mc.y = sinD(speed + angle*z) * disy;
40. setProp(mc,"alpha");
41. setProp(mc,"scaleX",.2,.7);
42. setProp(mc,"scaleY",.2,.7);
43. //保存图标到数组
44. depthArray[z] = mc;
45. }
46. //重新设置图标的深度
47. arrange(depthArray);
48. speed += 2;
49. }
50. function arrange(depthArray:Array):void {
51. //按照y坐标排序
52. depthArray.sortOn("y", Array.NUMERIC);
53. var i:int = depthArray.length;
54. while (i--) {
55. menu.setChildIndex(depthArray[i], i);
56. }
57. }
58. function setProp(mc:MovieClip,prop:String,n1:Number = .5, n2:Number = 1):void {
59. mc[prop] = ((mc.y + 2 * disy) / disy - 1) / 2 * (n2 - n1) + n1;
60. }

5、新建.as文档,保存名为:Math2.as (这个文档是进行三角函数的计算)

输入代码: 

1. //角度转弧度
2. function angleToRadian(angle:Number):Number
3. {
4. return angle*(Math.PI/180);
5. }
6. //弧度转角度
7. function radianToAngle(radian:Number):Number
8. {
9. return radian*(180/Math.PI);
10. }
11. //计算正弦值
12. function sinD(angle:Number):Number
13. {
14. return Math.sin(angleToRadian(angle));
15. }
16. //计算余弦值
17. function cosD(angle:Number):Number
18. {
19. return Math.cos(angleToRadian(angle));
20. }
21. //计算反正切
22. function atan2D(y:Number, x:Number):Number
23. {
24. return radianToAngle(Math.atan2(y, x));
25. }

复制代码

把fla文档与Math2.as 文档保存在同一目录下,进行测试。