【问题标题】:Setting multiple depth layers in AS3在 AS3 中设置多个深度层
【发布时间】:2011-10-01 00:50:18
【问题描述】:

我知道了如何在 as3 中设置深度——但是使用 as2 我可以使用数字开始多个“深度点”——在 as3 中,我似乎所能做的就是将此对象设置为比该对象更高/更低的深度。问题是(在处理一堆等距框时,用户可以按任何顺序将其放置在网格上)我不想处理让每个元素都知道其他元素在哪里的额外复杂性,然后适当调整。

我要做的是设置 6 个总深度数/位置,一个用于 6 x 6 网格中的每一列。因此,第 1 列中的任何内容都将从 500 开始其深度放置,第 2 列中的任何内容将从 1000 开始其深度,第 3 列将是 1500 等等。

那样,第二次我将一个对象放在特定的列上,它会将自己塞在下面,或者将自己放在其他列中的所有周围项目之上,这对我来说比以某种方式找出 15 个不同大小的盒子的位置要容易得多是,它们如何相互关联,然后找出它们需要进入的深度顺序。

有什么想法吗? as3 似乎已经取消了将深度设置为特定数字的能力:p

【问题讨论】:

    标签: actionscript-3 depth


    【解决方案1】:

    方法可以简化。您基本上想要创建 3 个“容器”剪辑并按顺序添加它们。添加的最后一个是最顶部的。

    奖励:如果你想重新排列,你可以在任何剪辑(甚至已经添加的剪辑)上调用 addChild() 并且那个剪辑会转到顶部。

    //// IMPORTANT STUFF ////
    import flash.display.Sprite;
    
    var top:Sprite = new Sprite;
    var mid:Sprite = new Sprite;
    var bot:Sprite = new Sprite;
    
    addChild(bot);
    addChild(mid);
    addChild(top);
    
    //// END IMPORTANT STUFF ////
    
    
    // Move Stuff so we can visualize how this works.
    // Then add some boxes so we can see what's going on.
    
    mid.x = 20;
    mid.y = 20;
    
    bot.x = 40;
    bot.y = 40;
    
    // Add Top box
    var t:Sprite = new Sprite;
    t.graphics.beginFill(0xFF0000);
    t.graphics.drawRect(0,0,100,100);
    top.addChild(t);
    
    // Add Middle box
    var m:Sprite = new Sprite;
    m.graphics.beginFill(0x00FF00);
    m.graphics.drawRect(0,0,100,100);
    mid.addChild(m);
    
    // Add Bottom box
    var b:Sprite = new Sprite;
    b.graphics.beginFill(0x0000FF);
    b.graphics.drawRect(0,0,100,100);
    bot.addChild(b);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-05
      • 2016-12-20
      • 2018-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      相关资源
      最近更新 更多