查看: 2615|回复: 1
打印 上一主题 下一主题

Flash与3D空间(三)

[复制链接]

9210

主题

1

听众

5万

积分

内部人员

Rank: 7Rank: 7Rank: 7

纳金币
12582
精华
186

活跃会员

跳转到指定楼层
楼主
发表于 2013-5-2 15:52:29 |只看该作者 |倒序浏览
pstatus"> 本帖最后由 lut_456 于 2013-5-2 16:00 编辑

注意

尝试把上面例子中小球之间的x距离变小,看看有什么变化?这时会发现,不管小球离我们多远,右边的小球始终在最上面。即使中间的小球应该盖过右边小球的时候,右边的小球还会在上面。这是因为在把小球添加到舞台上的时候,已经给了小球层次,也就是说最后添加的小球(右边的小球)就在最上面。



小球3D空间(无层次)位置不对了!


看起来应该设计一种方法实现小球的层次感,当小球离我们远的时候,那么它的层次就比较靠后,以此类推。换句话说,需要利用小球的z值给小球们分开层次,这也是即将要做的。在下面这个例子中,我们使用7个小球的运动来说明是如何实现层次的。


小球3D空间(有层次)好多了!


动画制作步骤

1. 和上次的例子一样,重复6个步骤。不同的是初始化7个小球,并且把它们的x距离缩短。

  1. for (var i = 0; i < 7; i++)
  2. {
  3.    var sphere = new Sphere();
  4.     sphere.x_3d = -150+i*40;
  5.     sphere.y_3d = 80;
  6.    sphere.z_3d = Math.random()*(0-600)+600;
  7.     sphere.direction = 1;
  8.     sphere.speed = Math.random()*(5-12)+12;
  9.     scene.addChild(sphere);
  10. }
复制代码

2. 利用Bubble Sort算法,在每一次对小球x,y和大小设置后,对所有的小球在舞台上的层次进行操作。这里使用的理论是最小的z值的小球,它所在层次就应该在最上面。不要小看我写的这短短几行代码哦!它可以把所有的小球分配到相应的层次!只要你的CPU够块,不管多少小球都可以。

  1. function swap_depth(container:Sprite)
  2. {
  3.     for (var i = 0; i < container.numChildren - 1; i++)
  4.    {
  5.         for (var j = container.numChildren - 1; j > 0; j--)
  6.         {
  7.             if (Object(container.getChildAt(j-1)).z_3d < Object(container.getChildAt(j)).z_3d)
  8.             {
  9.                 container.swapChildren(container.getChildAt(j-1), container.getChildAt(j));
  10.             }
  11.         }
  12.     }
  13. }
复制代码

3. 然后在循环函数里的最后加上

  1. swap_depth(scene);
复制代码

本文章旨在讨论如何在Flash中实现3D动画,对于一些算法,比如这一节中使用到的冒泡排序算法,当然你可以选择使用Merge Sort等O(nlogn)算法以提高效率。你可以完全拷贝我写的代码去使用,但是请务必注明出处。如果是排序的话,google或者百度一下,我相信你会找到更详细的说明文字来解释冒泡排序。


一个简单Particle System例子

这是一个使用缩放的基本概念的例子,可以使用键盘上下左右键移动你的观看位置,按下W键加速前进,按下S键减速。由于涉及到摄像机,在这篇文章中就不再讲解。源文件在本文的下载中可以找到,你可以尝试改变星星的数量,星星很多的话,移动摄像机,应该会看到一个很长的星带(题外话:在我的电脑里运行2000个 星星就有些慢了,Dual Core 2.0GHZ,如果你有更强大的CPU的话,那你看到星空要比我的漂亮的多)。

3D星空,简单的Particle System,WASD移动观看位置,K键加速,L键减速



OK,你已经学会了如果使用缩放和一些简单的设置产生3D效果的动画。在后面的几篇中,我们会逐渐深入探讨更有趣的内容。加油!


分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

njwqz    

0

主题

0

听众

76

积分

设计初学者

Rank: 1

纳金币
0
精华
0
沙发
发表于 2013-7-15 08:59:33 |只看该作者
楼主求后面几篇啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-16 06:55 , Processed in 0.366633 second(s), 37 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部