当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > Flash AS3.0实例教程:AS3.0代码制作3D旋转动画效果
Flash动画制作 中的 Flash AS3.0实例教程:AS3.0代码制作3D旋转动画效果
〖本教程着重于代码的编写,版本AS 3.0。图形元件的制作不作讲解,请参看有关教程。〗
1、新建Flash文档,创建5 个图形,(或导入5张图片到库中)。
2、创建一个影片剪辑,1层为图片层2层为代码层。在1层把5张图片分别放在5帧中,在代码层输入stop(); 如图:

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. //角度转弧度 |
把fla文档与Math2.as 文档保存在同一目录下,进行测试。
评论 (0) All