论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

45度深度排序(as3.0)

文章类别:Flash AS编程 | 发表日期:2008-10-6 18:37:07


        搞了一段时间的深度排序,几经波折,看了网上相关的资源但是并没有一个完整的介绍,于是自己写了一个,不是很完善,分享出来,希望大家多扔砖块,多给建议,下面是我的思路:
       1. 将物体的显示区域多边形、占用区域多边形[即物体在游戏坐标中的投影]勾出来.
       2. 每一个物体中占用区域多边形中点集屏幕坐标y值最小的点为物体的zMin点,y值最大的点为物体的zMax点.
       3. 先根据物体的zMin由小到大排序生成列表temp,并将temp复制一份列表为zIndex;
       4. 从temp中取一个物体P出来,跟余下的物体Q比较:
          a. P与Q发生碰撞;
          b. (1)如果P的index小于Q的index,那么检测P所占用的多边形的游戏坐标是否在Q近视点的一侧;(2)或如果P的index大小Q的index,那么检测P所占用的多边形的游戏坐标是否在Q远视点的一侧;
       5. 如果以上条件都满足,即要对P和Q的深度进行调整. 调整方法如下:
        将标记flag设置为false, 在有序列表zIndex中,P和Q必有先后关系,遍历zIndex, 如果是因为4.b(1)条件的话,则在zIndex中找到P,并将标记flag设置为true, ,凡是遇到flag为true的物体其index都加1,由num记录有多少个物体加了1,直到遇到Q,遇到Q后将Q的index-num并退出遍历; 如果是因为4.b(2)的条件的话,刚好相板,在列表zIndex中,Q必在P之前,按上述操作,先找到Q,将标记flag设置为true,......
       6. 调整完后,将列表zIndex按index重新排序.
       7. 执行4直到temp中没有任何物体.
       DEMO:

      

        点击其中一个物体拖动即可.

上一篇:{教程}As3 模拟As2.0 LoadVars传参 人气:4145
下一篇:{教程}位图梯形化(as3.0) 人气:2572
视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058