博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AS3的深度管理及排序
阅读量:4081 次
发布时间:2019-05-25

本文共 2823 字,大约阅读时间需要 9 分钟。

AS3的深度管理及排序

转自

说到深度管理,不由得想起了那万恶的AS2年代-_-! 至少本人觉得在AS2中的深度管理很是混乱,不仅有断层还会有冲突……总之麻烦多多。而在AS3中,一切都是这么的清晰与明朗,深度值断层不见了、有冲突的时候会自动调整,而我们只是记住以下几个语句的用法而已。

1234567891011121314
numChildren : int//返回此对象的子项数目。getChildAt(index:int):DisplayObject//返回位于指定索引处的子显示对象实例。getChildIndex(child:DisplayObject):int//返回 DisplayObject 的 child 实例的索引位置。setChildIndex(child:DisplayObject, index:int):void//更改现有子项在显示对象容器中的位置。swapChildren(child1:DisplayObject, child2:DisplayObject):void//交换两个指定子对象的 Z 轴顺序(从前到后顺序)。swapChildrenAt(index1:int, index2:int):void//在子级列表中两个指定的索引位置,交换子对象的 Z 轴顺序(前后顺序)。removeChildAt(index:int):DisplayObject//从 DisplayObjectContainer 的子列表中指定的 index 位置删除子 DisplayObject。

那么接下来我们来看一个简单的小例子吧,这里我就不罗列代码了,只把主要的写一下,关键是思路跟思想嘛,源码附在后面。有四个圆,可以点击与拖动,实现每点击其中一个圆,就把它调到最上面来。

这个其实很简单,要调整到最上层的话,只要用setChildIndex把鼠标点击对象的深度值设为(容器.numChildren-1)就可以啦。setChildIndex常用有以下几种:

12345678
置顶:容器.setChildIndex(对象A,容器.numChildren-1);置底:容器.setChildIndex(对象A,0);插入对象B的前面:容器.setChildIndex(对象A,容器.getChildIndex(对象B));插入对象B的后面:容器.setChildIndex(对象A,容器.getChildIndex(对象B)-1);

是不是太简单点了呢?那我们再加深一点点吧,我们把上例中的圆换成立方块,再点击拖动下看看……

在这里我们想要达到一种空间立体的效果的话,就要对这些方块进行深度的排序,也就是说要让我们视觉上看起来靠前的物体挡住后面的物体。解决方法应该是多种多样的,在这里本民工只说说自己的解决方案了。简单说来,物体的前后顺序可以通过Y轴坐标的大小来区分,Y轴坐标值大的深度值就越大,在拖动后用一个数据记录下每个对象以及该对象的Y值,再把该数组以Y值的大小排序,最后setChildIndex一遍就可以了。

123456789101112
//以下代码是放在MOUSE_UP的事件里。var obj_box:Array=new Array;//新建立数组。for (var i=0; i

最后再加个吸附功能吧,看看效果咯。

源码是临时写的,比较简单,都写在时间轴上咯。

相关文章

Moondy 发表于 2009-1-7
4,691 Views | 类别:

21条留言

  1. ?d=monsterid&s=40
    #1
    匿名
    @ 2009-3-30 10:49

    当你真需要断层是才会发现这个设定是多么的操蛋

    • 023dde1c3f221b27e49f8769732fb95c?s=40&d=monsterid&r=G
       
      Moondy
      @ 2009-3-30 15:12

      可是,在什么情况下需要断层呢?如果想把某个对象插入某个深度,其余对象都会自动调整。至少我还没想到在什么情况下需要特别留断层。

  2. ?d=monsterid&s=40
    #2
    匿名
    @ 2009-4-20 21:44

    例如说: A….. Z 26个显示对象,他们的Z序始终都是从上到下排列的,可是现在想按顺序插入N个显示对象,他们都在B上C下,

    怎么办呢?就需要记录新插入的显示对象,听麻烦的,

  3. 023dde1c3f221b27e49f8769732fb95c?s=40&d=monsterid&r=G
    #3
    Moondy
    @ 2009-4-21 02:15

    很容易啊,你说的A~Z,那么他们的深度都就是0~25,B的深度是1,C的深度是2,那么你只要addChildAt(obj,2),那么C的深度就变为3,后面的都自动后移一位。要插入N个就继续addChildAt(obj,2),其余的对象深度会自动调整的。很简单明了呀。

  4. ?d=monsterid&s=40
    #4
    匿名
    @ 2009-7-14 14:08

    :icon02

    • 023dde1c3f221b27e49f8769732fb95c?s=40&d=monsterid&r=G
       
      @ 2009-7-14 14:43

      不厚道,就一个表情,呵呵。

  5. ?d=monsterid&s=40
    #5
    匿名
    @ 2009-7-23 17:39

    受教了。。。

  6. ?d=monsterid&s=40
    #6
    请帮助
    @ 2009-8-7 17:25

    非常喜欢上面的几个例子,不过下载好像下载不下来,能给我发一份吗?

    linuxsoftware#126.com

    • 023dde1c3f221b27e49f8769732fb95c?s=40&d=monsterid&r=G
       
      Moondy
      @ 2009-8-7 22:29

      源文件就在文章的最后啊,可以下载的。我的下载应该不至于不显眼吧,呵呵,看仔细些嘛

  7. ?d=monsterid&s=40
    #7
    匿名
    @ 2009-9-1 16:35

    :icon37

  8. ?d=monsterid&s=40
    #8
    匿名
    @ 2009-11-2 16:34

    带走一点东西,放我那备用了

  9. 52d8e5bc2ea2c69786d1842f76825788?s=40&d=monsterid&r=G
    #9
    @ 2010-1-12 13:15

    您好,我是www.colaegg.com的站长,很喜欢你写的东西,但是真的下载不下来,能否发给我邮箱,拜托啦!colaegg@gmail.com

    • 023dde1c3f221b27e49f8769732fb95c?s=40&d=monsterid&r=G
       
      moondy
      @ 2010-1-12 22:17

      已经发给你了。真奇怪为什么会下不下来呢,叫很多朋友试了都行呀。

      不管了,有下不了的朋友就留言吧。

  10. ?d=monsterid&s=40
    #10
    匿名
    @ 2010-2-23 21:54

    你好 可以把你的东西发在我邮箱里面吗 以便自己学习用 真诚感谢你

    QQ邮箱

    • 023dde1c3f221b27e49f8769732fb95c?s=40&d=monsterid&r=G
      moondy
      @ 2010-2-24 14:30

      已经发给你了。

      至于你说的二级菜单的问题,有不会的地方大家可以讨论,但本人原则是上不做代刀的。

  11. ?d=monsterid&s=40
    #11
    匿名
    @ 2010-2-23 21:58

    请问你是否有时间 给我写个 二级菜单 点解二级菜单的时候 加载.swf 然后它的主菜单对应的按钮 区别别的菜单 就是点击完二级菜单下的按钮 他的对应主菜单颜色变亮啊 让人知道 我是点击了这个按钮下面的子菜单

  12. ?d=monsterid&s=40
    #12
    向往
    @ 2010-5-17 00:01

    :icon38

  13. 6788f60e6465ba4c0db12f5ba6b95d9c?s=40&d=monsterid&r=G
    #13
    gaojiren
    @ 2010-7-21 12:30

    楼主写的很赞,学习啦 :icon16

  14. 1341a2df7eec7f2621183e4e0540c447?s=40&d=monsterid&r=G
    #14
    未选之路
    @ 2010-7-26 11:13

    :icon35:icon35:icon35

    大哥,你太强了

    这样的例子好过给我N多行标准代码

    • 023dde1c3f221b27e49f8769732fb95c?s=40&d=monsterid&r=G
      moondy
      @ 2010-7-26 17:17

      过奖了,都是些简单的例子,我也还是个初学者呢

  15. 1341a2df7eec7f2621183e4e0540c447?s=40&d=monsterid&r=G
    #15
    未选之路
    @ 2010-9-6 16:08

    :icon07:icon35

posted on 2011-03-22 16:23 阅读(...) 评论(...)

转载地址:http://ykvni.baihongyu.com/

你可能感兴趣的文章
STM32CubeMX 真的不要太好用
查看>>
STM32CubeMX介绍、下载与安装
查看>>
电机和桨叶要搭配选择
查看>>
现在发现如果无人机的电机不同,浆可能是不能混用的。
查看>>
不要买铝合金机架的无人机,不耐摔,易变形弯曲。
查看>>
ACfly也是基于FreeRTOS的
查看>>
F330装GPS的位置
查看>>
STM32时钟系统
查看>>
我想先用三个或者五个激光测距做无人机的室内定位和避障
查看>>
pixhawk也可以用Airsim仿真
查看>>
《无人机电机与电调技术》可以看看
查看>>
我发现七月在线的GAAS课程基本都讲到了
查看>>
电机堵转
查看>>
一个真正好的无人机应该是需要自己慢慢去调参的,别人的默认参数是可以飞但是可能达不到perfect的效果。
查看>>
carzepony也在想往FreeRTOS上迁移
查看>>
可以买个好点的电烙铁
查看>>
ACfly调参记录(包括ACfly-F330和ACfly-T265)
查看>>
一定记得每飞几次或者隔一天要把螺丝和浆帽拧一次,确实会松的
查看>>
《多旋翼无人飞行器嵌入式飞控开发指南》里基于FreeRTOS的无人机软件框架
查看>>
我感觉无人机借助于激光雷达实现定点悬停的效果应该好于光流才是
查看>>