收藏本站 | 站点地图 | 繁體中文
沭阳乐园
您现在的位置: 沐阳乐园 >> 文章中心 >> 网络教程 >> 动画实例 >> 正文
[组图]制作3D旋转动画效果(AS3.0代码)         
制作3D旋转动画效果(AS3.0代码)
作者:佚名 文章来源:中国教程网论坛 点击数:1673 更新时间:2010-12-26 22:53:00

AS3.0代码制作的3D旋转动画效果

  

效果演示


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

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

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

制作3D旋转动画效果1


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


制作3D旋转动画效果02


 

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 文档保存在同一目录下,进行测试

文章录入:晴天    责任编辑:清水洗尘 
  • 上一篇文章:
  • 下一篇文章:
  • 【字体: 】 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    广告招商
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    ::发表评论::
     姓 名:
     评 分: 1分 2分 3分 4分 5分
     评论内容:
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用本网服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  • 广告招商
    文章 下载 图片 文字广告
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登陆

    备案/许可证编号: 闽ICP备16020960号-1号 域名创建于2016年8月
    版权: 沐阳乐园 All Rights Reserved 站长:张萍 邮箱:381415887@qq.com 联系QQ:联系站长